Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CDK with ChatGPT

CDK with ChatGPT

Yusuke Shimizu

March 30, 2023
Tweet

More Decks by Yusuke Shimizu

Other Decks in Technology

Transcript

  1. CDK with ChatGPT 志水 友輔 (しみず ゆうすけ) NRI ネットコム /

    CLOUD ARCHITECT AWS Top Engineer(2021) APN ALL AWS Certifications Engineers (2021/2022)  AWS CDK, Cloud9 SysOps 試験本書きました Blog:
  2. CDK with ChatGPT AWS Cloud Development Kit(CDK)とは クラウドアプリケーションのインフラストラクチャ を定義し、プロビジョニングするためのオープンソ ースのソフトウェア開発キット

    クラウドアプリのIaC 開発者は、インフラストラクチャの変更を追跡しや すくなり、バージョン管理とコードレビューが容易 使い慣れたプログラミング言語で記述 AWS リソースのためのコンストラクトと呼ばれる高 レベルなコンポーネントを提供し、開発者がリソー スの作成と構成を簡単に行うことができる コンストラクトで簡単に構築
  3. CDK with ChatGPT ChatGPTとは OpenAI が2022 年11 月に公開した人工知能(AI) チャットボット。自然で意味のある文章を生成する ことができる

    人工知能チャットボット 自然言語処理(NLP )タスクに優れており、質問へ の回答や文章の要約や翻訳はもちろん、コード生成 やコードの説明など開発者の助けも可能 開発者としても有用 ChatGPT は、2021 年9 月までの最新技術をベースに しており、それ以降の最新技術については、継続的 にアップデートされることが期待される 知識の限界
  4. CDK with ChatGPT INPUT OUTPUT 1 Python を使用してAWS CDK で

    EventBridge を利用し、日本時間の 朝9 時に"Hello ChatGPT" を返す Lambda 関数が実行される サーバレスアーキテクチャを構築する 方法を教えて VSCode 、Microsoft 、https://azure.microsoft.com/ja-jp/products/visual-studio-code
  5. CDK with ChatGPT INPUT OUTPUT 1 Python を使用してAWS CDK で

    EventBridge を利用し、日本時間の 朝9 時に"Hello ChatGPT" を返す Lambda 関数が実行される サーバレスアーキテクチャを構築する 方法を教えて 言語をPython に指定 日本時間の9 時(UTC0 時)に なってる Rule とFunction も 紐付けしてる VSCode 、Microsoft 、https://azure.microsoft.com/ja-jp/products/visual-studio-code
  6. CDK with ChatGPT OUTPUT2 OUTPUT3 CDK コードに沿った手順 Lambda の場所やファイル名 body

    でHello ChatGPT を 返してる handler 名もCDK と合ってる ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28 VSCode 、Microsoft 、https://azure.microsoft.com/ja-jp/products/visual-studio-code
  7. CDK with ChatGPT OUTPUT4 RESULT $ cdk deploy Traceback (most

    recent call last): File "/Users/yusuku_shimizu/git/codecommit/shimi zu-chatgpt/app.py", line 1, in <module> from aws_cdk import core ImportError: cannot import name 'core' from 'aws_cdk' (/Users/yusuku_shimizu/git/codecommit/shimiz u-chatgpt/.venv/lib/python3.9/site- packages/aws_cdk/__init__.py) Subprocess exited with error 1 ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28
  8. CDK with ChatGPT OUTPUT4 RESULT $ cdk deploy Traceback (most

    recent call last): File "/Users/yusuku_shimizu/git/codecommit/shimi zu-chatgpt/app.py", line 1, in <module> from aws_cdk import core ImportError: cannot import name 'core' from 'aws_cdk' (/Users/yusuku_shimizu/git/codecommit/shimiz u-chatgpt/.venv/lib/python3.9/site- packages/aws_cdk/__init__.py) Subprocess exited with error 1 ERROR!!! ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28
  9. CDK with ChatGPT OUTPUT4 RESULT $ cdk deploy Traceback (most

    recent call last): File "/Users/yusuku_shimizu/git/codecommit/shimi zu-chatgpt/app.py", line 1, in <module> from aws_cdk import core ImportError: cannot import name 'core' from 'aws_cdk' (/Users/yusuku_shimizu/git/codecommit/shimiz u-chatgpt/.venv/lib/python3.9/site- packages/aws_cdk/__init__.py) Subprocess exited with error 1 ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28
  10. CDK with ChatGPT $ cdk deploy Traceback (most recent call

    last): File "/Users/yusuku_shimizu/git/codecommit/shimi zu-chatgpt/app.py", line 1, in <module> from aws_cdk import core ImportError: cannot import name 'core' from 'aws_cdk' (/Users/yusuku_shimizu/git/codecommit/shimiz u-chatgpt/.venv/lib/python3.9/site- packages/aws_cdk/__init__.py) Subprocess exited with error 1 core のインポートが出来ない OUTPUT4 RESULT ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28
  11. CDK with ChatGPT $ cdk deploy Traceback (most recent call

    last): File "/Users/yusuku_shimizu/git/codecommit/shimi zu-chatgpt/app.py", line 1, in <module> from aws_cdk import core ImportError: cannot import name 'core' from 'aws_cdk' (/Users/yusuku_shimizu/git/codecommit/shimiz u-chatgpt/.venv/lib/python3.9/site- packages/aws_cdk/__init__.py) Subprocess exited with error 1 core パッケージはv1 のみ v1 は2023/06 にサポート終了 OUTPUT4 RESULT ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28
  12. CDK with ChatGPT $ cdk deploy Traceback (most recent call

    last): File "/Users/yusuku_shimizu/git/codecommit/shimi zu-chatgpt/app.py", line 1, in <module> from aws_cdk import core ImportError: cannot import name 'core' from 'aws_cdk' (/Users/yusuku_shimizu/git/codecommit/shimiz u-chatgpt/.venv/lib/python3.9/site- packages/aws_cdk/__init__.py) Subprocess exited with error 1 core パッケージはv1 のみ v1 は2023/06 にサポート終了 OUTPUT4 RESULT CDK v2 化を実施 ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28
  13. CDK with ChatGPT 修正方法 v1->v2 移行の方法:ChatGPT は知らない AWS ドキュメントを参考 https://docs.aws.amazon.com/ja_jp/cdk/v2

    /guide/migrating-v2.html cdk-sample の修正を参考 https://github.com/aws-samples/aws-cdk- examples/commit/b6d65ac3c105b68b583a8 7da8f2e7c4def1e980a#diff- d4d60597adf6490245ba6583d79eea5135cf8 82b45b2dcc7cf32a78e8463b1bb
  14. CDK with ChatGPT 修正内容 差分 パッケージ修正 core 削除 aws_cdk にApp,Stack

    を追加 constructs のConstruct を追加 コード修正 core. を削除 asset->from_asset へ変更 VSCode 、Microsoft 、https://azure.microsoft.com/ja-jp/products/visual-studio-code
  15. CDK with ChatGPT $ cdk deploy Traceback (most recent call

    last): File "/Users/yusuku_shimizu/git/codecommit/shimi zu-chatgpt/app.py", line 1, in <module> from aws_cdk import core ImportError: cannot import name 'core' from 'aws_cdk' (/Users/yusuku_shimizu/git/codecommit/shimiz u-chatgpt/.venv/lib/python3.9/site- packages/aws_cdk/__init__.py) Subprocess exited with error 1 OUTPUT4 RESULT 何故v1 を提示するの? →ChatGPT の知識が2021/09 まで ChatGPT 、OpenAI 、https://openai.com/blog/chatgpt 、アクセス日:2023/03/28
  16. CDK/ChatGPTの歴史 エラー原因 2019/07 CDK v1 公開 2023/03 GPT-4 公開 2022/11

    ChatGPT 公開 2020/06 GPT-3 公開 2019/02 GPT-2 公開 2018/06 GPT 公開 2021/12 CDK v2 公開 2021/09 ChatGPT の 知識限界 2023/06 CDK v1 サポート終了 2021/10/06 CDK v1.126.0
  17. CDK/ChatGPTの歴史 エラー原因 2019/07 CDK v1 公開 2023/03 GPT-4 公開 2022/11

    ChatGPT 公開 2020/06 GPT-3 公開 2019/02 GPT-2 公開 2018/06 GPT 公開 2021/12 CDK v2 公開 2021/09 ChatGPT の 知識限界 2023/06 CDK v1 サポート終了 2021/10/06 CDK v1.126.0
  18. CDK/ChatGPTの歴史 エラー原因 2019/07 CDK v1 公開 2023/03 GPT-4 公開 2022/11

    ChatGPT 公開 2020/06 GPT-3 公開 2019/02 GPT-2 公開 2018/06 GPT 公開 2021/12 CDK v2 公開 2021/09 ChatGPT の 知識限界 2023/06 CDK v1 サポート終了 2021/10/06 CDK v1.126.0
  19. CDK/ChatGPTの歴史 エラー原因 2019/07 CDK v1 公開 2023/03 GPT-4 公開 2022/11

    ChatGPT 公開 2020/06 GPT-3 公開 2019/02 GPT-2 公開 2018/06 GPT 公開 2021/12 CDK v2 公開 2021/09 ChatGPT の 知識限界 2023/06 CDK v1 サポート終了 2021/10/06 CDK v1.126.0 ChatGPT はCDK v2 のコードを学習できていない 提示されるコードは基本的にv1
  20. CDK with ChatGPT $ flake8 app.py app.py:9:1: E302 expected 2

    blank lines, found 1 app.py:26:80: E501 line too long (99 > 79 characters) LINT 指摘内容 空行が2 個必要 1 行にある文字数が多すぎる
  21. CDK with ChatGPT プロンプト 修正 $ flake8 app.py | echo

    $0 0 修正内容(from ChatGPT) 修正結果 クラス定義の前に2 つの空白行を追加しました ( 行 9) 。 EventBridge ルールの定義において、長い行を改 行して整形しました ( 行 26) 。 変更点: 1. 2. 下記がコード内容とそれに対するflake8 の指摘内容 です。指摘を直すようにコードを修正して。 ・コードの内容 コードをコピる ・指摘内容 app.py:9:1: E302 expected 2 blank lines, found 1 app.py:26:80: E501 line too long (99 > 79 characters)
  22. CDK with ChatGPT プロンプト 修正 $ flake8 app.py | echo

    $0 0 修正内容(from ChatGPT) 修正結果 クラス定義の前に2 つの空白行を追加しました ( 行 9) 。 EventBridge ルールの定義において、長い行を改 行して整形しました ( 行 26) 。 変更点: 1. 2. flake8 は問題 なし 下記がコード内容とそれに対するflake8 の指摘内容 です。指摘を直すようにコードを修正して。 ・コードの内容 コードをコピる ・指摘内容 app.py:9:1: E302 expected 2 blank lines, found 1 app.py:26:80: E501 line too long (99 > 79 characters)
  23. CDK with ChatGPT $ cdk diff [Error at /ServerlessEventBridgeExample/HelloChatGPTLa mbda/ServiceRole/Resource]

    AwsSolutions- IAM4[Policy::arn: <AWS::Partition>:iam::aws:policy/service- role/AWSLambdaBasicExecutionRole]: The IAM user, role, or group uses AWS managed policies. [Error at /ServerlessEventBridgeExample/HelloChatGPTLa mbda/Resource] AwsSolutions-L1: The non- container Lambda function is not configured to use the latest runtime version. Found errors cdk-nag 指摘内容 IAM のマネージドポリシーを使ってる 最新のRuntime を利用していない
  24. CDK with ChatGPT プロンプト 修正 下記がコード内容とそれに対するcdk-nag の指摘内 容です。指摘を直すようにコードを修正して。 ・コードの内容 コードをコピる

    ・指摘内容 [Error at /ServerlessEventBridgeExample/HelloChatGPTLambda/ServiceRol e/Resource] AwsSolutions-IAM4[Policy::arn: <AWS::Partition>:iam::aws:policy/service- role/AWSLambdaBasicExecutionRole]: The IAM user, role, or group uses AWS managed policies. [Error at /ServerlessEventBridgeExample/HelloChatGPTLambda/Resource] AwsSolutions-L1: The non-container Lambda function is not configured to use the latest runtime version. $ cdk diff ... hello_chatgpt_lambda.role = lambda_role AttributeError: can't set attribute Subprocess exited with error 1 修正内容(from ChatGPT) 修正結果 Lambda 関数のランタイムをPython 3.9 に更新し ました ( 行 21) 。 AWS マネージドポリシーの代わりに、カスタム ポリシーを作成し、Lambda 関数に関連付けられ たロールにアタッチしました ( 行 25-45) 。 変更点: 1. 2.
  25. CDK with ChatGPT プロンプト 修正 下記がコード内容とそれに対するcdk-nag の指摘内 容です。指摘を直すようにコードを修正して。 ・コードの内容 コードをコピる

    ・指摘内容 [Error at /ServerlessEventBridgeExample/HelloChatGPTLambda/ServiceRol e/Resource] AwsSolutions-IAM4[Policy::arn: <AWS::Partition>:iam::aws:policy/service- role/AWSLambdaBasicExecutionRole]: The IAM user, role, or group uses AWS managed policies. [Error at /ServerlessEventBridgeExample/HelloChatGPTLambda/Resource] AwsSolutions-L1: The non-container Lambda function is not configured to use the latest runtime version. $ cdk diff ... hello_chatgpt_lambda.role = lambda_role AttributeError: can't set attribute Subprocess exited with error 1 修正内容(from ChatGPT) 修正結果 Lambda 関数のランタイムをPython 3.9 に更新し ました ( 行 21) 。 AWS マネージドポリシーの代わりに、カスタム ポリシーを作成し、Lambda 関数に関連付けられ たロールにアタッチしました ( 行 25-45) 。 変更点: 1. 2. ERROR!!!
  26. CDK with ChatGPT プロンプト 修正 ` hello_chatgpt_lambda.role = lambda_role` の部分で

    ` AttributeError: can't set attribute` というエラーが出ました。修正して $ cdk deploy ... ✅ ServerlessEventBridgeExample ✨ Deployment time: 72.48s ... 修正内容(from ChatGPT) 修正結果 _lambda.Function の定義を更新して、role パラ メータに lambda_role を割り当てました ( 行 34- 40) 。 Lambda 関数の定義をロールの定義の後に移動し ました。 変更点: 1. 2.
  27. CDK with ChatGPT プロンプト 修正 ` hello_chatgpt_lambda.role = lambda_role` の部分で

    ` AttributeError: can't set attribute` というエラーが出ました。修正して $ cdk deploy ... ✅ ServerlessEventBridgeExample ✨ Deployment time: 72.48s ... 修正内容(from ChatGPT) 修正結果 _lambda.Function の定義を更新して、role パラ メータに lambda_role を割り当てました ( 行 34- 40) 。 Lambda 関数の定義をロールの定義の後に移動し ました。 変更点: 1. 2. cdk_nag も いけた!
  28. CDK with ChatGPT flake8 cdk-nag エラー内容の修正はChatGPT で可能 そもそもエラー自体も少なかった ChatGPT で出来たコードがある程度質

    が高い可能性有り 簡単な構成な可能性もある エラー内容の修正は一発では出来なかった が可能 指摘内容はよくあるものだったので、極端 にできているコードの質が悪いことではな い バージョンの指摘はPython3.9 が 2021/09 以降で適用されたため 指摘後のエラーも会話を続けて修正しても らえれば継続的に修正可能
  29. まとめ ChatGPT でコーディング速度アップ AWS CDK とChatGPT を組み合わせることで、迅速かつ正確 なAWS インフラストラクチャの作成が可能 オールインワンの回答がもらえる

    CDK コードでなく、CDK のインストール手順やLambda のコ ードも回答されるため、それを適用するだけで良い セキュリティが担保されたコードの生成 flake8/cdk-nag に指摘されたものを伝えると良い感じのコー ドを出してくれるため、楽にセキュリティ担保可能