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/

Masataka Yoshida

January 31, 2018
Tweet

More Decks by Masataka Yoshida

Other Decks in Technology

Transcript

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

    Web アプリ, スマー トフォンアプリにお熱 やり始めるまでが遅い……:;(∩´ ﹏`∩);: 4
  2. サー バレス( アー キテクチャ) Function as a Service AWS Lambda,

    Azure Functions... Web アプリで考えると 常時立ち上げなくても良い 環境の準備作業が減る スケー リング, セキュリティ, ... アプリの運用はなくならない 7
  3. ふつうのLambda デプロイ法 アプリケー ションのデプロイは 直接コー ドを貼り付ける ZIP に圧縮してアップロー ドする AWS

    S3 にアップロー ドして場所を入力する s3://bucket/path ではなく https://s3.amazonaws.com/bucket/path を入力 のいずれかを繰り返す必要がある 10
  4. AWS CodePipeline 継続的デリバリー GitHub 等のソー スコー ドを自動でビルド・ デプロ イするサー ビス

    変更(push など) を検知できる 今回はさらに CodeBuild/CloudFormation を使う Lambda 用に "AWS SAM" と呼ばれる CloudFormation テンプレー トがある 15
  5. CloudFormation のテンプレー ト Lambda 関数のファイルを指定する CodeUri がわか らない S3 のパスを指定するの??

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

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

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

    ロー ルなど) を正しく設定しても 状況は変わらない Access Denied (Service: Amazon S3;Status Code: 403; Error Code: AccessDenied; Request ID: 2C8D52DAAA000000) “ “ 25