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

CodePipelineでLambdaのデプロイをしようとして躓いた話

 CodePipelineでLambdaのデプロイをしようとして躓いた話

スライド中ではできた感はなかったのですが、GitHubにプッシュされるのと連動してLambda functionのデプロイができました。

そんな、できるようになるまでの躓いたお話。

fun-tech meetup #6 IT技術ではじめての○○○ビアバッシュLT大会 - connpass
https://fun-tech.connpass.com/event/74618/

F5367e6dde42dda84768b5b145c12eef?s=128

Masataka Yoshida

January 31, 2018
Tweet

More Decks by Masataka Yoshida

Other Decks in Technology

Transcript

  1. fun-tech meetup #6 CodePipeline でLambda の デプロイをしようとして 躓いた話 Masataka Yoshida

  2. 「IT 技術ではじめての◦◦◦」 ?

  3. はじめてのデプロイ自動化

  4. 自己紹介 吉田 匡孝(Masataka Yoshida) 株式会社オー プンストリー ム AWS Lambda のおしごと

    Web アプリ, スマー トフォンアプリにお熱 やり始めるまでが遅い……:;(∩´ ﹏`∩);: 4
  5. 1. サー バレス と AWS Lambda 2. Lambda 関数デプロイつらすぎ問題 3.

    はじめてのデプロイ自動化 5
  6. 1. サー バレス と AWS Lambda

  7. サー バレス( アー キテクチャ) Function as a Service AWS Lambda,

    Azure Functions... Web アプリで考えると 常時立ち上げなくても良い 環境の準備作業が減る スケー リング, セキュリティ, ... アプリの運用はなくならない 7
  8. None
  9. 2. Lambda 関数デプロイつら すぎ問題

  10. ふつうのLambda デプロイ法 アプリケー ションのデプロイは 直接コー ドを貼り付ける ZIP に圧縮してアップロー ドする AWS

    S3 にアップロー ドして場所を入力する s3://bucket/path ではなく https://s3.amazonaws.com/bucket/path を入力 のいずれかを繰り返す必要がある 10
  11. None
  12. つらい

  13. GitHub にpush しただけで Lambda がデプロイされるよ うにしたい

  14. 3. はじめてのデプロイ自動化

  15. AWS CodePipeline 継続的デリバリー GitHub 等のソー スコー ドを自動でビルド・ デプロ イするサー ビス

    変更(push など) を検知できる 今回はさらに CodeBuild/CloudFormation を使う Lambda 用に "AWS SAM" と呼ばれる CloudFormation テンプレー トがある 15
  16. Lambda ベー スのアプリケー ションのデプロイメン トを自動化する https://docs.aws.amazon.com/ja_jp/lambda/late st/dg/automating-deployment.html 16

  17. None
  18. 必要なファイル 18

  19. ( はじめてだと) つらい

  20. 躓いた点 1. CloudFormation のテンプレー トがわからない 2. なかなかデプロイされない 20

  21. CloudFormation のテンプレー ト Lambda 関数のファイルを指定する CodeUri がわか らない S3 のパスを指定するの??

    template.yml Resources: Function1: Type: AWS::Serverless::Function Properties: Handler: handler.lambda_handler Runtime: python3.6 CodeUri: ? 21
  22. A. テンプレー トからみた相対パスで良い CodeBuild → CloudFormation に移る際に CodeUri はS3 のパスに変換される

    S3 にLambda 関数のファイルが配置される CodeUri: ./ ↓ CodeUri: s3://sample-bucket/sam/sample 22
  23. CodePipeline の「 つらい」 脱出ポ イント 1. CodePipeline は GitHub からの取り込み

    デプロイ作業全体の流れ 2. CodeBuild でデプロイ用の template.yml をビルド 3. それをCloudFormation でLambda 関数などにする 23
  24. None
  25. なかなかデプロイされない CodeBuild は成功 CloudFormation で「 失敗」 する Access Denied? アクセス権(IAM

    ロー ルなど) を正しく設定しても 状況は変わらない Access Denied (Service: Amazon S3;Status Code: 403; Error Code: AccessDenied; Request ID: 2C8D52DAAA000000) “ “ 25
  26. A. CodeBuild の buildspec.yml を確認する artifacts のインデントが間違っていると起こる 正 phases: install:

    … artifacts: … 誤 phases: install: … artifacts: … 26
  27. 運用 Coming Soon!

  28. 今後の展望 CodeDeploy でLambda 関数をデプロイできるよう になった 少しずつ新しいバー ジョンに切り替えられる 問題が起きたときに前のバー ジョンにすぐ戻せ る

    28