Clineで一からテスト付きLambdaURLデプロイパイプラインを作成してみたらどうなるかやってみた
何度やってもAWSクレデンシャルの環境変数設定は失敗しましたがそれ以外はそのままいけました!
config.yml
を修正してみました。ClineはソースコードだけではなくCircleCIも学習しているようです。
さらにテスト付きLambda関数デプロイのパイプラインを作成してもらいました。Lambdaだとテストが少し煩雑になるためURL経由でアクセス&テストが可能なLambdaURLを用いました。
何度(5回)やってもAWS CredentialをCircleCIの環境変数から読み込む部分だけは気づかなかったようで、ここだけ明示的にプロンプトで指示を出したところ気づいてくれたようです。
さっそくやってみる
0. 環境準備
本当はindex.mjs
も何もない状態からClineに作業をしてもらいたかったのですが、CircleCIの制限で何かファイルが入っていないとブランチができないためindex.mjs
だけを入れてあります。
export const handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda deployed by CircleCI!'),
};
return response;
};
1.Cline on VSCode との対話
https://github.com/harunobukameda/LambdaURL がCircleCIのプロジェクトと連携しています。 index.mjsをURL付きLambdaとしてデプロイする設定を作成してください
このプロンプトで依頼をしました。
ガンガン以下の作業を行っています。
git clone https://github.com/harunobukameda/LambdaURL .
config.yml の修正
README.md の作成
SAM用template.ymlの作成
.gitignoreの作成
package.jsonの作成
.eslintrc.jsonの作成
index.mjsの修正
test-local.jsの作成
node test-local.js でテストファイルのテスト実行
また以下4つの環境変数を作成せよ、と指示が出ました。
- `AWS_ACCESS_KEY_ID`
- `AWS_SECRET_ACCESS_KEY`
- `AWS_REGION`
- `AWS_LAMBDA_ROLE_ARN`
上3つはすでに過去の手順でCircleCI側で作成済です。AWS_LAMBDA_ROLE_ARN
は作成したLambda関数にアタッチする用ですのでIAMロールを作成してARNを環境変数に入れておきます。
途中何度かDeployエラーがCircleCI側で出ましたが、エラーをそのままコピペするとClienは修正を都度してくれます。
2, AWS Credentials の取り扱い指示
ただどうしてもAWS Credentialの正しい指定だけは5回試しましたが成功しませんでした。config.yml
でCircleCIの環境変数を指定する必要があるのですが、そこは最終的に以下で指示を出しました。
<snip>
workflows:
deploy-lambda-workflow:
# Inside the workflow, you define the jobs you want to run.
jobs:
- deploy-lambda:
# Use the aws-credentials context to access AWS credentials
context:
- aws-credentials
# Only run on main branch
filters:
branches:
only: main
通常CircleCIの環境変数はcontext
として読み込ませるのですが、その部分は漏れていました。
workflowには
context:
- aws-credentials
が必要じゃないですか?
と伝えるとすぐ思い出して修正してくれました。以下の通り無事Deloyが成功しました!
出来上がったファイル群はこちら!
Discussion