<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kenichiro Wada</title>
    <description>The latest articles on DEV Community by Kenichiro Wada (@kenichirowada).</description>
    <link>https://dev.to/kenichirowada</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F997498%2Fad75452c-ec05-4e18-aa55-d30ce643234b.JPG</url>
      <title>DEV Community: Kenichiro Wada</title>
      <link>https://dev.to/kenichirowada</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kenichirowada"/>
    <language>en</language>
    <item>
      <title>A Vibe Coding Beginner Tried Making a Game with Amazon Q CLI</title>
      <dc:creator>Kenichiro Wada</dc:creator>
      <pubDate>Fri, 20 Jun 2025 03:02:03 +0000</pubDate>
      <link>https://dev.to/aws-builders/a-vibe-coding-beginner-tried-making-a-game-with-amazon-q-cli-1fkl</link>
      <guid>https://dev.to/aws-builders/a-vibe-coding-beginner-tried-making-a-game-with-amazon-q-cli-1fkl</guid>
      <description>&lt;p&gt;The header image is for illustrative purposes only and is not related to the main text. &lt;/p&gt;




&lt;p&gt;This text is a translation of the content from the following article using Amazon Nova Premier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zenn.dev/keni_w/articles/e95dda34d32ae8" rel="noopener noreferrer"&gt;https://zenn.dev/keni_w/articles/e95dda34d32ae8&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;An event called "Create a game with Amazon Q CLI and get a T-shirt" was being held, and many people were challenging it. Also, after hearing about AI development the other day, I thought I should try Vibe Coding... so I gave it a try.&lt;/p&gt;

&lt;p&gt;About the event (until June 30, 2025) &lt;br&gt;
&lt;a href="https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/" rel="noopener noreferrer"&gt;https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Vibe Coding?
&lt;/h2&gt;

&lt;p&gt;I set the model to Amazon Nova Pro in Amazon Bedrock and asked about Vibe Coding.&lt;/p&gt;

&lt;p&gt;Vibe Coding is an innovative approach that combines sensitivity and atmosphere with traditional programming paradigms. In this method, developers not only implement functions but also express emotions and visions through code. &lt;br&gt;
Vibe Coding deeply considers team dynamics, culture, and the final user experience. Developers are encouraged to write code that reflects the overall atmosphere and emotional tone of the project, resulting in more personalized and intuitive software solutions. &lt;br&gt;
Vibe Coding emphasizes not only technical accuracy but also creativity and empathy, making the development process more inclusive and human-friendly. This approach is particularly effective in creative industries and fields that prioritize user experience.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;Set up by looking at the explanation pages and articles by pioneers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zenn.dev/showm001/articles/2025-06-12-01" rel="noopener noreferrer"&gt;https://zenn.dev/showm001/articles/2025-06-12-01&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zenn.dev/kumao/articles/61d2f8bca89eb1" rel="noopener noreferrer"&gt;https://zenn.dev/kumao/articles/61d2f8bca89eb1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.classmethod.jp/articles/q-developer-cli-game-cbs/" rel="noopener noreferrer"&gt;https://dev.classmethod.jp/articles/q-developer-cli-game-cbs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://community.aws/content/2vlITBGRfv8slpeU1UlTrpT4bBI/vibe-coding-in-practice-building-a-super-mario-game-with-amazon-q-developer-cli" rel="noopener noreferrer"&gt;https://community.aws/content/2vlITBGRfv8slpeU1UlTrpT4bBI/vibe-coding-in-practice-building-a-super-mario-game-with-amazon-q-developer-cli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install the following on your development PC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Q CLI&lt;/li&gt;
&lt;li&gt;pygame&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After installation, start Q CLI with the &lt;code&gt;q chat&lt;/code&gt; command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;% q chat
To learn more about MCP safety, see https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-mcp-security.html


    ⢠⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣶⣦⡀⠀
 ⠀⠀⠀⣾⡿⢻⣿⡆⠀⠀⠀⢀⣄⡄⢀⣠⣤⣤⡀⢀⣠⣤⣤⡀⠀⠀⢀⣠⣤⣤⣤⣄⠀⠀⢀⣤⣤⣤⣤⣤⣤⡀⠀⠀⣀⣤⣤⣤⣀⠀⠀⠀⢠⣤⡀⣀⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⢠⣿⣿⠋⠀⠀⠀⠙⣿⣿⡆
 ⠀⠀⣼⣿⠇⠀⣿⣿⡄⠀⠀⢸⣿⣿⠛⠉⠻⣿⣿⠛⠉⠛⣿⣿⠀⠀⠘⠛⠉⠉⠻⣿⣧⠀⠈⠛⠛⠛⣻⣿⡿⠀⢀⣾⣿⠛⠉⠻⣿⣷⡀⠀⢸⣿⡟⠛⠉⢻⣿⣷⠀⠀⠀⠀⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀⢸⣿⣿
 ⠀⢰⣿⣿⣤⣤⣼⣿⣷⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⢀⣴⣶⣶⣶⣿⣿⠀⠀⠀⣠⣾⡿⠋⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⡇⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢹⣿⣇⠀⠀⠀⠀⠀⢸⣿⡿
 ⢀⣿⣿⠋⠉⠉⠉⢻⣿⣇⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⣿⣿⡀⠀⣠⣿⣿⠀⢀⣴⣿⣋⣀⣀⣀⡀⠘⣿⣿⣄⣀⣠⣿⣿⠃⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣦⣀⣀⣀⣴⣿⡿⠃
 ⠚⠛⠋⠀⠀⠀⠀⠘⠛⠛⠀⠘⠛⠛⠀⠀⠀⠛⠛⠀⠀⠀⠛⠛⠀⠀⠙⠻⠿⠟⠋⠛⠛⠀⠘⠛⠛⠛⠛⠛⠛⠃⠀⠈⠛⠿⠿⠿⠛⠁⠀⠀⠘⠛⠃⠀⠀⠘⠛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⢿⣿⣿⣋⠀⠀
 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢿⡧

╭─────────────────────────────── Did you know? ────────────────────────────────╮
│                                                                              │
│      Set a default model by running q settings chat.defaultModel MODEL.      │
│                          Run /model to learn more.                           │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

/help all commands  •  ctrl + j new lines  •  ctrl + s fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 You are chatting with claude-3.7-sonnet

&amp;gt; /model

✔ Select a model for this chat session · claude-4-sonnet

 Using claude-4-sonnet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What I Made
&lt;/h2&gt;

&lt;p&gt;When thinking about what to create, meteorite drop and colony drop came to mind. &lt;br&gt;
Influenced by a certain anime that peaks on Tuesday late nights in June 2025... So, a shooting game where you shoot down falling objects from the ground?&lt;/p&gt;

&lt;p&gt;I started Q CLI and gave the following instructions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;地球に落下してくる物体をレーザー砲を発射して、破壊するゲームを作ります。
プレイヤーは、地球連邦軍のガーディアン部隊の隊員です。
地上に向かって落下してくる物体をレーザー砲を操作して破壊するミッションを日々行なっています。
レーザー砲は、左右で移動、スペースキーで発射します。
落下してくる物体は以下の物体があり、それぞれに耐久度と報酬が設定されています。
耐久度はその物体を破壊するためにレーザー砲を何発当てる必要があるかの数値です。
報酬はその物体を破壊するもらえるスコアです。破壊するたびにスコアがプラスされていきます。
物体が地上に落下すると、その物体のポイントでスコアがマイナスされていきます。
スコアがマイナス10000になるとゲームオーバーです。
落下してくる物体は以下です。左から、名前,耐久度,報酬になります。
壊れた衛星,1,10
火球,1,20
UFO,1,50
スペースプレーン,1,-10000
UFO母艦,10,100
スペースコロニー,20,1000
小惑星,50,10000

1回のゲームは120秒間で終了します。
UFO母艦、スペースコロニー、小惑星は最後の30秒から出現させてください。

ただし、スコアが-10000になるとその時点でゲームオーバーです。
ゲームはguradianというディレクトリの中に作ってください。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Sorry Japanese Only.)&lt;/p&gt;

&lt;p&gt;The basic game was completed with these instructions. Surprisingly, it took about 3 hours to finish development.&lt;/p&gt;

&lt;p&gt;The completed game screen looks like this. &lt;br&gt;
As you can see from the repository, it consists of just one HTML and one JavaScript file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbfmgl2894ky8tmwh0us.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzbfmgl2894ky8tmwh0us.png" alt="game display" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(Forgetting to take a screenshot during development was a big mistake.)&lt;/p&gt;

&lt;p&gt;The basic gameplay involves shooting down objects falling from space (top) with a laser cannon from the ground (bottom).&lt;br&gt;
The laser cannon is tricolor, which is an homage to a certain anime (I specifically instructed to make the laser cannon tricolor).&lt;/p&gt;
&lt;h2&gt;
  
  
  Various Updates
&lt;/h2&gt;

&lt;p&gt;As I mentioned earlier, something close to completion was made initially, but upon trying it out, I found various points for improvement, which I then instructed to be improved. &lt;br&gt;
Even when I gave vague instructions, it properly responded with "I'll do this," which I thought was really amazing. &lt;br&gt;
Sometimes errors occurred, but it recovered properly, and I was truly impressed, thinking, &lt;strong&gt;This is seriously amazing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For example, there are final boss-like objects such as the UFO mothership, space colony (influenced by a certain anime), and asteroids (also influenced by a certain anime). &lt;br&gt;
However, they were falling at the same size and speed as the others, so I thought I'd increase their size and adjust their falling speed. &lt;br&gt;
I gave instructions like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; UFO母艦、スペースコロニー、小惑星はサイズを4倍にして、他に比べて1/4のスピードで落下するようにしてください。
UFO母艦、スペースコロニー、小惑星のサイズを4倍にし、落下速度を1/4にして、より迫力のある強敵にします。

〜中略〜

修正が完了しました！🚀

## 🔄 変更内容

### 大型敵の強化
• **サイズ**: 4倍に拡大
  • UFO母艦: 50px → 200px
  • スペースコロニー: 60px → 240px  
  • 小惑星: 80px → 320px

• **落下速度**: 1/4に減速
  • 通常敵: 1-3px/フレーム
  • 大型敵: 0.25-0.75px/フレーム

### ゲームバランスの調整
• **出現制限**: 大型敵がいる時は同時出現数を1体に制限
• **視覚効果**: 大型敵に影と光るエフェクトを追加
• **HP表示**: 大型敵のHP数値を明確に表示

### 戦略性の向上
1. 時間管理: 大型敵は時間をかけて倒す必要がある
2. 位置取り: 巨大なサイズで回避が困難
3. 集中攻撃: 高耐久力で連続攻撃が必要
4. リスク管理: 大型敵出現時は他の敵が出にくい

### 視覚的インパクト
• **迫力**: 巨大なサイズで圧倒的な存在感
• **エフェクト**: 影と光で立体感を演出
• **情報表示**: HP数値で戦況を把握しやすく

これで、最後の30秒に出現する大型敵が真の脅威となり、ゲームのクライマックスがより緊張感のあるものになりました！大型敵は画面の大部分を占めるため、プレイヤーは慎重な位置取りと集中的な攻撃が求められます。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Sorry Japanese Only.)&lt;/p&gt;

&lt;p&gt;With these instructions, I made them gigantic to give a final boss feel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm6nhu2wi98m9xyolhwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgm6nhu2wi98m9xyolhwe.png" alt="boss1" width="800" height="946"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2u64i1e0rj6ir2qy3yw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2u64i1e0rj6ir2qy3yw.png" alt="boss2" width="800" height="946"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As an aside, I asked to make the space colony circular, like the so-called O'Neill cylinder type space colony.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; スペースコロニーを円形にして、アイコンもシリンダーっぽいものにしてください。
スペースコロニーを円形にして、シリンダーっぽいアイコンに変更します。

〜中略〜

 ⋮ 
 ● Completed in 0.0s
スペースコロニーの円形デザインが完成しました！🏭

## 🔄 変更内容

### 視覚的変更
• **形状**: 四角形 → 円形
• **アイコン**: 🏗️ → 🏭（シリンダーっぽい工場アイコン）
• **グラデーション**: 中心が白く、外側に向かって黄色のグラデーション
• **枠線**: 黄色の円形枠線で強調

### 技術的改善
• **描画**: arc() を使用した円形描画
• **影効果**: 円形の影エフェクト
• **当たり判定**: 円と点の距離計算による正確な当たり判定

### デザインの特徴
1. シリンダー効果: 放射状グラデーションで立体感を演出
2. 工業的外観: 🏭アイコンで宇宙コロニーの工業施設感を表現
3. 視認性: 円形で他の四角い敵との区別が明確
4. リアリズム: 実際のスペースコロニー（O'Neill型）に近い円筒形

### ゲームプレイへの影響
• **当たり判定**: より正確な円形当たり判定
• **視覚的識別**: 独特な形状で瞬時に識別可能
• **戦略性**: 円形のため角を狙う戦術が不要
• **美観**: より宇宙的で未来的な外観

### 宇宙コロニーの表現
• **O'Neill型**: 円筒形の回転する宇宙居住施設
• **工業施設**: 🏭で製造・居住複合施設を表現
• **規模感**: 240pxの大きさで巨大構造物を演出

これで、スペースコロニーがより現実的で視覚的に魅力的な円形デザインになりました！宇宙空間に浮かぶ巨大な円筒形居住施設として、ゲームの世界観がより豊かになります。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Sorry Japanese Only.)&lt;/p&gt;

&lt;p&gt;I didn't specifically mention it, but I was a bit moved when it came out with &lt;strong&gt;Realism: Close to an actual space colony (O'Neill type) cylindrical shape.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I completed it for now and committed it to GitHub. The README files were created based on the resources generated by Q CLI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kenichiro-Wada/amazon-q-developer-games/tree/main/guardian" rel="noopener noreferrer"&gt;https://github.com/Kenichiro-Wada/amazon-q-developer-games/tree/main/guardian&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"By the way, it says Multilingual support (7 languages), but while the in-game explanations have been changed, the surrounding descriptions and such remain the same, so it's in a half-done state."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Example of French notation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faadnfu02c9l9d9ku7kuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faadnfu02c9l9d9ku7kuf.png" alt="france1" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jjnn4fkz4zegux8rdfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jjnn4fkz4zegux8rdfy.png" alt="france2" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By the way, even if you exit with &lt;code&gt;/quit&lt;/code&gt;, you can resume by giving instructions like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; 地球防衛ゲーム「ガーディアン」を改良しようと思います。
地球防衛ゲーム「ガーディアン」の改良について、まずは現在のプロジェクト構造を確認させてください。


🛠️  Using tool: fs_read (trusted)
 ⋮ 
 ● Reading directory: . with maximum depth of 0
 ⋮ 
 ● Completed in 0.0s
guardianディレクトリがありますね。その中身を確認してみましょう。


🛠️  Using tool: fs_read (trusted)
 ⋮ 
 ● Reading directory: ./guardian with maximum depth of 0
 ⋮ 
 ● Completed in 0.0s
ガーディアンゲームのファイル構成が確認できました。どのような改良を考えていますか？

現在のゲームの状況を把握するために、まずはREADMEファイルを確認してみましょう：


🛠️  Using tool: fs_read (trusted)
 ⋮ 
 ● Reading file: ./guardian/README_jp.md, all lines
 ⋮ 
 ● Completed in 0.0s
現在のゲームの状況がよく分かりました。どのような改良を考えていますか？例えば：

• **新しい敵の種類**を追加
• **パワーアップシステム**の実装
• **効果音や音楽**の追加
• **新しいゲームモード**の追加
• **ビジュアルエフェクト**の強化
• **モバイル対応**の改善
• **リーダーボード機能**の追加

具体的にどの部分を改良したいか教えてください。現在のゲームコードも確認して、最適な改良方法を提案します。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Sorry Japanese Only.)&lt;/p&gt;

&lt;p&gt;Well, that's convenient.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Play
&lt;/h2&gt;

&lt;p&gt;To play the game, you can check out the following repository and open &lt;code&gt;guardian/index.html&lt;/code&gt; in your browser to start playing.&lt;br&gt;
(Confirmed to work in Google Chrome.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kenichiro-Wada/amazon-q-developer-games/" rel="noopener noreferrer"&gt;https://github.com/Kenichiro-Wada/amazon-q-developer-games/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As mentioned before, the author is not good at shooting games, so I can't get a very high score, but I think skilled players could achieve quite high scores.&lt;br&gt;
(Note: Spaceplanes are allies, so don't shoot them down)&lt;/p&gt;

&lt;h2&gt;
  
  
  Impressions
&lt;/h2&gt;

&lt;p&gt;When I first came up with the idea, I had a rough image of what it would be like, but I was surprised that something close to it, including the UI, was created in the initial stage.&lt;/p&gt;

&lt;p&gt;Just by giving instructions to Q CLI, I didn't write any code, including the README. The points to be modified in the code were shown each time, so I could see how it was changed by looking at them (though I can't call it confirmation), but I was really just watching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Q Developer is truly amazing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was a great experience, and I plan to continue practicing Vibe Coding in the future.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feel free to check out the repository and try the game. Enjoy!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>amazonqcli</category>
    </item>
    <item>
      <title>Lambda's loop detection after it became compatible with loops triggered by S3.</title>
      <dc:creator>Kenichiro Wada</dc:creator>
      <pubDate>Sun, 22 Dec 2024 13:59:04 +0000</pubDate>
      <link>https://dev.to/aws-builders/lambdas-loop-detection-after-it-became-compatible-with-loops-triggered-by-s3-5gp8</link>
      <guid>https://dev.to/aws-builders/lambdas-loop-detection-after-it-became-compatible-with-loops-triggered-by-s3-5gp8</guid>
      <description>&lt;p&gt;Regarding the &lt;a href="https://aws.amazon.com/jp/about-aws/whats-new/2023/07/aws-lambda-detects-recursive-loops-lambda-functions/" rel="noopener noreferrer"&gt;detection and stopping of Lambda loops&lt;/a&gt; introduced in 2023, in October 2024, the long-awaited (I think) detection and stopping of loops with S3 triggers has been supported!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/jp/about-aws/whats-new/2024/10/aws-lambda-detects-stops-recursive-loops-lambda-s3/" rel="noopener noreferrer"&gt;https://aws.amazon.com/jp/about-aws/whats-new/2024/10/aws-lambda-detects-stops-recursive-loops-lambda-s3/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During the 2023 update, I wrote verification articles in the following post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/i-created-a-lambda-loop-detection-verification-environment-with-aws-cdk-and-verified-it-5883"&gt;https://dev.to/aws-builders/i-created-a-lambda-loop-detection-verification-environment-with-aws-cdk-and-verified-it-5883&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a continuation of that, or rather, since S3 triggers were not a target for detection and stopping at that time, and I wrote that I would be happy if they were updated in the future,I re-verified the S3 triggers after the update. (Two months late... sorry) &lt;br&gt;
I will also update the past articles later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/i-created-a-lambda-loop-detection-verification-environment-with-aws-cdk-and-verified-it-5883"&gt;https://dev.to/aws-builders/i-created-a-lambda-loop-detection-verification-environment-with-aws-cdk-and-verified-it-5883&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the runtime of the verification Lambda, I am using the one I created last time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kenichiro-Wada/aws-lambda-recursion-detection" rel="noopener noreferrer"&gt;https://github.com/Kenichiro-Wada/aws-lambda-recursion-detection&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It works as is, but the following have been addressed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updates to various modules,&lt;/li&gt;
&lt;li&gt;Node.js runtime version upgrade (v18 -&amp;gt; v22)&lt;/li&gt;
&lt;li&gt;Added a 5-second wait in the internal process (to prevent it from stopping immediately)&lt;/li&gt;
&lt;li&gt;Updated README (mentioning detection and stopping)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Verification of Loop Detection and Notification with S3 Trigger
&lt;/h2&gt;

&lt;p&gt;The verification of detection was done with the following configuration.&lt;br&gt;
To confirm that it was okay, I also checked other detection patterns, but since there were no particular changes in behavior, I will omit them. &lt;br&gt;
If you are interested, please refer to the previous article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxl52w9hgfgegb1q305zo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxl52w9hgfgegb1q305zo.png" alt="S3 Loop" width="642" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result is... &lt;strong&gt;it stops properly&lt;/strong&gt; (well, it has to stop, right? lol)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpff9cakfpomackplhfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpff9cakfpomackplhfh.png" alt="s3 loop metrics" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It has also been executed 16 times according to the metrics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i77rg2py9aye8k30giy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i77rg2py9aye8k30giy.png" alt="cloudwatch logs" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before the update, it looked like this. ※From the previous verification.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhyd4n8ntoyor0k211x3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffhyd4n8ntoyor0k211x3.png" alt="previous s3 loop metrics" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Searching for messages output within Lambda in Cloudwatch Logs showed 16 entries, indicating that it was limited to 16 executions.&lt;/p&gt;

&lt;p&gt;The metric for detection and stopping is "Recursive invocations dropped" and one stop has been recorded.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzshcb7pz143zpmv9wdc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbzshcb7pz143zpmv9wdc.png" alt="Recursive invocations dropped" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notifications are also displayed on the AWS Health Dashboard as usual.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdp8moxtsewtdxm8l7upm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdp8moxtsewtdxm8l7upm.png" alt="AWS Health Dashboard" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5octbga7ndthcb1jmhkr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5octbga7ndthcb1jmhkr.png" alt="AWS Health Dashboard Detail" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Verification Needed
&lt;/h2&gt;

&lt;p&gt;In this loop case, there is no flow to trigger a notification, so I think it might be possible to notify by setting a DLQ for Lambda.&lt;br&gt;
I will try a slightly modified version of the flow. Also, I will additionally verify what happens when S3 and SQS are combined and update the article.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Not to Forget (I Write This Every Time)
&lt;/h2&gt;

&lt;p&gt;Although the long-awaited implementation for S3 triggers has been made, as I mentioned in a previous article, even though it has been implemented, we should not rely on it.&lt;br&gt;
To begin with, &lt;br&gt;
&lt;strong&gt;we should avoid loops&lt;/strong&gt;.&lt;br&gt;
I will not forget this. With S3 support, I think all cases that might cause an infinite loop have been addressed, but I still believe that avoiding loops in the first place is the most important.&lt;/p&gt;

&lt;h2&gt;
  
  
  In Case of Intentional Looping...
&lt;/h2&gt;

&lt;p&gt;In cases where looping is intentional, stopping at 16 times becomes a problem, so in such cases,it seems that it can be disabled using the &lt;a href="https://docs.aws.amazon.com/lambda/latest/api/API_PutFunctionRecursionConfig.html" rel="noopener noreferrer"&gt;PutFunctionRecursionConfig API&lt;/a&gt;. &lt;br&gt;
(I think it used to be raising a support case...) I might try it later...&lt;/p&gt;

&lt;h2&gt;
  
  
  The End
&lt;/h2&gt;

&lt;p&gt;Detection &amp;amp; stopping is just a guardrail, I think (it's also mentioned in the guide).&lt;br&gt;
As mentioned above, unless it's intentional,&lt;br&gt;
it's important to avoid loops in the first place, and I will be careful not to do so.&lt;/p&gt;




&lt;p&gt;This article is being translated from Japanese to English using Amazon Bedrock and Amazon Nova Pro. &lt;br&gt;
Additionally, the title image is being generated using Amazon Bedrock and Amazon Nova Canvas.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Using Amazon EventBridge Pipes to build an AWS CDK stack to launch ECS Tasks</title>
      <dc:creator>Kenichiro Wada</dc:creator>
      <pubDate>Fri, 12 Jan 2024 04:12:01 +0000</pubDate>
      <link>https://dev.to/aws-builders/using-amazon-eventbridge-pipes-to-build-an-aws-cdk-stack-to-launch-ecs-tasks-5cb1</link>
      <guid>https://dev.to/aws-builders/using-amazon-eventbridge-pipes-to-build-an-aws-cdk-stack-to-launch-ecs-tasks-5cb1</guid>
      <description>&lt;p&gt;A year late, I touched Amazon EventBridge Pipes,&lt;br&gt;
I made this for verification purposes, using Amazon EventBridge Pipes to launch an ECS Task.&lt;/p&gt;

&lt;p&gt;I'm a newbie to ECS, so this is the first time for me to make it properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I made it.
&lt;/h2&gt;

&lt;p&gt;I'm a person who usually uses AWS Lambda to build things,&lt;br&gt;
I usually use AWS Lambda to create various things, but for my work, I had to create a heavy process (batch, yes...) which is a case where containers would be the best choice. I was asked to create a heavy process (batch, yes...).&lt;/p&gt;

&lt;h3&gt;
  
  
  How do we start the ECS Task?
&lt;/h3&gt;

&lt;p&gt;After finishing the development of the application locally, we started to consider what kind of configuration we should use. And then we started to consider,&lt;br&gt;
The problem was how to start the ECS Task.&lt;br&gt;
The way to do it is,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Call AWS Lambda from SQS to launch ECS Task&lt;/li&gt;
&lt;li&gt;ECS Task triggered by Step Functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In terms of processing, we decided to use SQS triggers. And then, we decided to use SQS to AWS Lambda to launch ECS Task,&lt;br&gt;
Then I thought, &lt;code&gt;Call AWS Lambda from SQS and launch ECS Task&lt;/code&gt;?&lt;br&gt;
But I thought that it would be a bit odd to call Lambda just for the purpose of launching the task (my favorite AWS service is &lt;strong&gt;AWS Lambda!&lt;/strong&gt;)... I was thinking..,&lt;br&gt;
I found out that I can use &lt;code&gt;Amazon EventBridge Pipes&lt;/code&gt; to launch ECS Tasks, so I decided to build it using Amazon EventBridge Pipes (sorry for being a year late).&lt;br&gt;
I also decided to build it with AWS CDK v2.&lt;/p&gt;

&lt;h2&gt;
  
  
  About Amazon EventBridge Pipes
&lt;/h2&gt;

&lt;p&gt;Learn more about Amazon EventBridge Pipes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/eventbridge/pipes/" rel="noopener noreferrer"&gt;https://aws.amazon.com/eventbridge/pipes/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Created this time
&lt;/h2&gt;

&lt;p&gt;The following is available to the public.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kenichiro-Wada/cdk-eventbridge-pipes-ecs-tasks" rel="noopener noreferrer"&gt;https://github.com/Kenichiro-Wada/cdk-eventbridge-pipes-ecs-tasks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The required items, etc. are listed in the README.&lt;br&gt;
AWS CDK operation is confirmed with Cloud9 as of 2023/12/21.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyp715y7dylo0sg7eiuyn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyp715y7dylo0sg7eiuyn.png" alt="configuration diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In building it, we refer to the following site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-heroes/aws-cdkv2-stack-for-building-amazon-eventbridge-pipes-sqs-to-cloudwatch-logs-52n9"&gt;https://dev.to/aws-heroes/aws-cdkv2-stack-for-building-amazon-eventbridge-pipes-sqs-to-cloudwatch-logs-52n9&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.classmethod.jp/articles/cdk-ecs-ecr/" rel="noopener noreferrer"&gt;https://dev.classmethod.jp/articles/cdk-ecs-ecr/&lt;/a&gt;&lt;br&gt;
(Sorry, Japanese Only)&lt;/p&gt;

&lt;p&gt;We would like to take this opportunity to thank you!&lt;/p&gt;

&lt;h2&gt;
  
  
  A cautionary tale if you try to run it.
&lt;/h2&gt;

&lt;p&gt;The sample code, needs to be rewritten in two places, please make the changes after checkout.&lt;/p&gt;

&lt;h3&gt;
  
  
  About VPC
&lt;/h3&gt;

&lt;p&gt;In this requirement, there is a requirement to use an existing VPC, so the sample also specifies the ID, etc. of the existing VPC and imports and uses the information of a Public subnet. (Public Subnet is not in the requirement, but the sample is set to Public.)&lt;br&gt;
Please change the VPC ID to match your environment.&lt;/p&gt;

&lt;p&gt;If you want to create a new VPC together..., please refer to the official documentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can create a NAT Gateway by specifying the name and CIDR, but you need to be careful about this because it will create a NAT Gateway for each AZ.&lt;br&gt;
If you want to launch the container itself on a private subnet, you will need a NAT Gateway (NAT instance) or VPC endpoint.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zenn.dev/yoshinori_satoh/articles/ecs-fargate-vpc-endpoint" rel="noopener noreferrer"&gt;https://zenn.dev/yoshinori_satoh/articles/ecs-fargate-vpc-endpoint&lt;/a&gt;&lt;br&gt;
(Sorry Japanese only)&lt;/p&gt;

&lt;h3&gt;
  
  
  Notes on exporting Pipes logs to Cloudwatch Logs
&lt;/h3&gt;

&lt;p&gt;I am including this because there was an update in November 2023 to support log output to Cloudwatch Logs, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-eventbridge-logging-improved-observability/" rel="noopener noreferrer"&gt;https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-eventbridge-logging-improved-observability/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I first made it, I got an error, what? Not supported? I threw an issue in a mad rush, but it was nothing, I was using an older version of Typo and aws-cdk-lib, so be careful with Typo. And I'm really sorry.&lt;/p&gt;

&lt;p&gt;I've just solved the problem and set it up,&lt;br&gt;
The level is set to Optional in the PipeLogConfigurationProperty, but even if it is not specified, it does not cause an error in the cdk diff, but it causes an error at runtime.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_pipes.CfnPipe.PipeLogConfigurationProperty.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_pipes.CfnPipe.PipeLogConfigurationProperty.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since it is already specified on the sample code, it should not be an error.&lt;/p&gt;

&lt;p&gt;I am waiting for Pipes to support L2 for now, because I hope it will set this area well even if it is not set in L2...&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Since the beginning of 2023, I had been thinking that I had to try it! I finally got to try a service I've been meaning to try since the beginning of 2023.&lt;/p&gt;

&lt;p&gt;EventBridge Pipes, it's quite useful. I didn't try the filter and enhancement this time, but I will try it when I get a chance.&lt;br&gt;
I would also like to connect other processes.&lt;/p&gt;

&lt;p&gt;As for the containers, this is the first time I've touched them properly except for the ones I inherited,&lt;br&gt;
On the other hand, it is quite fun. On the other hand, there are still many things I don't understand, so I would like to continue my study.&lt;/p&gt;

&lt;p&gt;At any rate, based on the verification results, I have finished building a batch (yes, it's a batch) that is necessary for business and am testing it to great acclaim. I am sure it will work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Special Thanks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.amazon.co.jp/dp/4815607656" rel="noopener noreferrer"&gt;Introduction to AWS Container Design and Construction "Authentic" (Japanese book)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/aws-heroes/aws-cdkv2-stack-for-building-amazon-eventbridge-pipes-sqs-to-cloudwatch-logs-52n9"&gt;AWS CDK stack for building Amazon EventBridge Pipes (SQS to CloudWatch Logs)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.classmethod.jp/articles/cdk-ecs-ecr/" rel="noopener noreferrer"&gt;Implementing ECS and ECR Container Configuration with CDK (for the second time)(Japanese Only)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://track3jyo.com/2022/12/pipes-with-you/" rel="noopener noreferrer"&gt;Tweet this and that with EventBridge Pipes - I want to "|" with you... Postscript - (Japanese Only)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://akamist.com/blog/archives/5332" rel="noopener noreferrer"&gt;"CDK" Error in Vpc.fromLookup(): "Cannot retrieve value from context provider vpc-provider since account/region are not specified at the stack level" ( Japanese Only)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>I created a Lambda loop detection verification environment with AWS CDK and verified it.</title>
      <dc:creator>Kenichiro Wada</dc:creator>
      <pubDate>Wed, 20 Sep 2023 13:24:12 +0000</pubDate>
      <link>https://dev.to/aws-builders/i-created-a-lambda-loop-detection-verification-environment-with-aws-cdk-and-verified-it-5883</link>
      <guid>https://dev.to/aws-builders/i-created-a-lambda-loop-detection-verification-environment-with-aws-cdk-and-verified-it-5883</guid>
      <description>&lt;p&gt;Nice to meet you!&lt;br&gt;
I'm Kenichiro Wada, one of the AWS Comunity Builders in Japan.&lt;/p&gt;

&lt;p&gt;This is my first post here.&lt;br&gt;
I hope you will read it, even though it is a rambling article.&lt;/p&gt;




&lt;p&gt;This article is a compilation of the following two published in Japanese.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zenn.dev/keni_w/articles/acbfd69a2c7dbb" rel="noopener noreferrer"&gt;https://zenn.dev/keni_w/articles/acbfd69a2c7dbb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://zenn.dev/keni_w/articles/ef6e8d39bb055f" rel="noopener noreferrer"&gt;https://zenn.dev/keni_w/articles/ef6e8d39bb055f&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;I tried "Detecting and stopping recursive loops in AWS Lambda functions" which appeared last month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/about-aws/whats-new/2023/07/aws-lambda-detects-recursive-loops-lambda-functions/" rel="noopener noreferrer"&gt;AWS Lambda now detects and stops recursive loops in Lambda functions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Those who have looped with Lambda in the past (including me) thought it was a surprise and were slightly disappointed (see "What to Expect in the Future"),&lt;br&gt;
But when I actually tried it, I was impressed because it stopped properly.&lt;/p&gt;

&lt;p&gt;For details on how it works, please click here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/blogs/compute/detecting-and-stopping-recursive-loops-in-aws-lambda-functions/" rel="noopener noreferrer"&gt;Detecting and stopping recursive loops in AWS Lambda functions&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, in the article that I tried to verify, others have already written about it, so I started by building a verification environment using the AWS CDK.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build a verification environment with AWS CDK
&lt;/h2&gt;

&lt;p&gt;The created resources are available on Github.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Kenichiro-Wada/aws-lambda-recursion-detection" rel="noopener noreferrer"&gt;https://github.com/Kenichiro-Wada/aws-lambda-recursion-detection&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As mentioned in the README,&lt;br&gt;
The following verification environment will be deployed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Loops in Amazon SQS With Dead Letter Queue&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7lt8pwf7t09haq3mizd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa7lt8pwf7t09haq3mizd.png" alt="Loops in Amazon SQS With Dead Letter Queue"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Looping with Amazon SQS Without Dead Letter Queue&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiskl7ggptjbrsvx3ukxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiskl7ggptjbrsvx3ukxa.png" alt="Looping with Amazon SQS Without Dead Letter Queue"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looping with Amazon SNS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgb16ora861dkqjuu37p5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgb16ora861dkqjuu37p5.png" alt="Looping with Amazon SNS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pattern combining Amazon SNS and Amazon SQS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faletsidao1p5rhv2enzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faletsidao1p5rhv2enzj.png" alt="Pattern combining Amazon SNS and Amazon SQS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pattern Combining Amazon SQS and AWS Lambda&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F707yp12q30t33tqrjsik.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F707yp12q30t33tqrjsik.png" alt="Pattern Combining Amazon SQS and AWS Lambda"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looping with Amazon SQS and AWS Lambda in a Beaded Pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ydt8d1x3x00xkof83zz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ydt8d1x3x00xkof83zz.png" alt="Looping with Amazon SQS and AWS Lambda in a Beaded Pattern"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looping with Amazon S3 (this is a bonus)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvemwye6mw4lmvpxq5i2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvemwye6mw4lmvpxq5i2s.png" alt="Looping with Amazon S3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We prepared two types of Amazon SQS because we wanted to know if the behavior changes depending on whether DLQ is used or not.&lt;/p&gt;

&lt;p&gt;As for Amazon S3, it is not included in this project, so it is a complete bonus.&lt;br&gt;
This one does not detect and stop when it is running,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If left unchecked, it will continue to run forever, so be sure to stop it!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The code for the Lambda function was generated by ChatGPT (no charge).&lt;br&gt;
I am someone who has not yet mastered Amazon CodeWhisperer yet. I will try harder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verified.
&lt;/h2&gt;

&lt;p&gt;My honest impression is, oh, it properly stops at 16 runs.&lt;br&gt;
The invoke metrics also confirm that it stops at 16 runs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fik0m9zf2b1ycflmwn76a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fik0m9zf2b1ycflmwn76a.png" alt="Lambda Invoke Metrics"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I tried to display it in console.log in Cloudwatch Log to search for messages and get them out,&lt;br&gt;
For the execution, 16 messages are displayed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fothjrg66qhjjhjvnvul5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fothjrg66qhjjhjvnvul5.png" alt="Lambda Function Cloudwatch Logs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(I should have used the TAIL function.)&lt;/p&gt;

&lt;p&gt;Email notifications and Health Dashboard notifications did not appear until about 3 hours later.&lt;br&gt;
Below is the Health Dashboard notification.&lt;br&gt;
The ones that were close to the execution time were guided together.&lt;br&gt;
(Sorry for my Japanese.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26xnn1kd1v1a3ytn1krh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26xnn1kd1v1a3ytn1krh.png" alt="Health Dashboard notification 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wqwu46rkpfgsc35va13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1wqwu46rkpfgsc35va13.png" alt="Health Dashboard notification 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykjtcd9x0eyy1s76kbrj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fykjtcd9x0eyy1s76kbrj.png" alt="Health Dashboard notification 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to do this as soon as possible...,&lt;br&gt;
Set up a DLQ and use SQS triggers to notify errors (this is also the case),&lt;br&gt;
(This is also the case.) If you can detect that the system has entered the DLQ, you may be able to notice it as soon as possible. I think so.&lt;br&gt;
I'm sending an email in the case of a DLQ in SQS this time. &lt;/p&gt;

&lt;p&gt;In the case of the SQS loop with and without DLQ, the behavior did not change,&lt;br&gt;
In the case of the SQS loop without DLQ, if I left the loop as it was, I received an email and a Health Dashboard message the next day or later.&lt;br&gt;
This is the loop processing (without DLQ) information email received on 2023/08/07 that was executed on 2023/08/05.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom0ze6reu16hf3y4xkhk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fom0ze6reu16hf3y4xkhk.png" alt="Mail"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is interesting that it changes with or without DLQ.&lt;br&gt;
I think it is recommended to have a DLQ available when using Queue, so I am guessing that the notification will not appear continuously, as it is not even a recommended setting to begin with, plus don't let it loop.&lt;/p&gt;

&lt;p&gt;The extra S3 trigger, though,&lt;br&gt;
When I run it, it looks like this. (Even the person who created it was nervous when moving it.)&lt;br&gt;
I stopped it after about a minute, but still, it was executed 27 times.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5pxct8v2azbse05w2hb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5pxct8v2azbse05w2hb.png" alt="for s3 Loop"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one is not subject to detection, so if you try it,&lt;br&gt;
&lt;strong&gt;Please stop it as soon as you run it!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Amazon SQS and AWS Lambda beaded pattern
&lt;/h2&gt;

&lt;p&gt;I wondered if the following pattern would also stop, and verified it, although the pattern was not specifically stated in the official statement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28k9w04tt2urqb2edal6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F28k9w04tt2urqb2edal6.png" alt="Pythagorean switch"&gt;&lt;/a&gt;&lt;br&gt;
(This is an excerpt from a slide, so it is only in Japanese. Sorry.)&lt;/p&gt;

&lt;p&gt;At the beginning of the verification, I thought that this case would not be detected and stopped...,&lt;br&gt;
It stopped and stopped properly.&lt;/p&gt;

&lt;p&gt;This is the Invocations metric for a Lambda function executed in a Pythagorean switch pattern.&lt;br&gt;
This one also stopped after 16 times. (I was really thrilled...)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3n85c1besat71xr0vau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3n85c1besat71xr0vau.png" alt="Pythagorean switch Lambda Metrics"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can try this one with the "Loop with Amazon SQS and AWS Lambda in a beaded pattern" mentioned above.&lt;/p&gt;

&lt;p&gt;I think this time the mechanism is supposed to detect by entering the same Queue or something else in succession, so I'm thinking it would be no good if it goes through something else.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Expect in the Future
&lt;/h2&gt;

&lt;p&gt;I think it would be a very effective mechanism in a configuration using SQS/SNS.&lt;/p&gt;

&lt;p&gt;But I've had it happen in the past, too,&lt;br&gt;
I've had several people comment on it,&lt;br&gt;
I think Lambda loops are often triggered by S3 triggers like the following.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncrmqbgrqvsr425u2dng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncrmqbgrqvsr425u2dng.png" alt="Lambda Loop"&gt;&lt;/a&gt;&lt;br&gt;
※This is a Loop pattern that I have caused in the past. &lt;br&gt;
(This is also extracted from a slide, so it is only in Japanese. Sorry.)&lt;/p&gt;

&lt;p&gt;So,&lt;br&gt;
I want it implemented in S3 triggers!&lt;br&gt;
I have come to the conclusion that this is a good idea.&lt;br&gt;
I wonder if it will be difficult... But I hope so.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't forget.
&lt;/h2&gt;

&lt;p&gt;One thing to remember. The ability to detect and stop loop execution is only an auxiliary function (last resort).&lt;br&gt;
What we should not forget is,&lt;br&gt;
I think we need to be careful to avoid loops.&lt;/p&gt;

&lt;p&gt;In the pattern we were verifying, hey, it's not a loop, is it? I had to review it,&lt;br&gt;
I think it is necessary to construct the process in such a way that it does not become a loop (unless it is intentional).&lt;/p&gt;

&lt;p&gt;In addition, it seems that the support case needs to be raised for cases where loops are intentionally created.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finally.
&lt;/h2&gt;

&lt;p&gt;Sample published on github, S3 trigger case,&lt;br&gt;
If you try it, please stop it immediately after it starts!&lt;br&gt;
If you get charged for it, it's your fault for not stopping it, and we are not responsible for it.&lt;br&gt;
It's all over README.md!&lt;/p&gt;




&lt;p&gt;We will continue to implement Event processing to avoid being indebted to this function as much as possible.&lt;/p&gt;

</description>
      <category>lambda</category>
    </item>
  </channel>
</rss>
