AWS CodePipeline CodeDeploy CodeDeploy触ってみた

2022/11/09に公開

はじめに

AWS Certified DevOps Engineer - Professionalの勉強中にCodeシリーズが出てきたので、 AWS公式のチュートリアルに沿って学習しました。 その手順を記録しておきます。

GitHub https://github.com/goda-kazuki/codepipeline-serverless

AWS SAM

準備

AWS SAM CLIのインストール https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html

初期テンプレのアプリを用意 https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html

重要なファイル

  • template.yaml
    • SAMリソースを定義
  • hello_world/app.py
    • Lambdaハンドラーロジック
  • hello_world/requirements.txt
    • 依存関係の定義。
    • sam build時に利用

メモ

  • sam build
    • .aws-samディレクトリに依存関係を解消したものを配置
    • 要らないディレクトリも生成されている(Python経験が無いだけで、必要なのかも)
  • sam deploy --guided
    • guidedはCLIのプロンプトガイドを表示するオプション
    • 裏ではCloudFormationが動いてるっぽい
  • aws cloudformation delete-stack --stack-name sam-app --region region
    • クリーンアップ

CodePipeline

使用した資料 https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/tutorials-serverlessrepo-auto-publish.html

やったこと

  • パイプラインの作成
  • ソースステージをGitHubにして接続
  • CodeBuildの設定
    • S3にzipファイルが出力されていることを確認
  • CodeDeployの設定
  • Lambdaにデプロイされることを確認
  • おまけ
    • SNSでデプロイされたら通知してみる

メモ

資料にちゃんと書いてくれてるのに、勝手に詰まってたポイント

  • CodeBuild

    • buildspec.ymlにtemplate.ymlと指定してたが、正しくはtemplate.yamlだったので、エラーでコケてた。
    • ビルドする際に、S3に出力されるが、IAMロールに権限を追加する必要がある
  • CodeDeploy

    • 既存のLambdaにデプロイしようとすると、デプロイが完了しなかった。

    • メタデータをtemplate.yamlに記入しないとデプロイできないようなので、以下を記載

      Metadata:
      AWS::ServerlessRepo::Application:
      Name: codepipeline-serverless
      Description: hello world
      Author: goda
      
GitHubで編集を提案

Discussion