Help us understand the problem. What is going on with this article?

SAMで容量の大きなlambdaのコードをCodeUriで指定する方法

SAMで容量の大きなlambdaのコードをCodeUriで指定する方法についてです。

ローカルにzipにしておいておく。

lambdaはあまりにもでかいコードをあげる場合にはzipにするか、それ以上ではcliからs3にアップし、lambdaからはそのURIを指定する方法をとります。
実際、以前の記事(近くで開催される勉強会を定期的にslackへ流す。)ではdockerコンテナをs3へ置いてlambdaから参照して実行していました。

他方でsam-cliは、template.ymlCodeUriに指定した相対パスのソースコードをs3へアップします。

つまり、zipにまでして相対パスを指定しておけばs3へのアップはsam packageコマンドの中で同時に行われます。
リファレンスを見るとこのCodeUriにはs3のパスを指定できていることから、一度s3にあげたコードをここで参照させるのかと思っていましたがtemplate.ymlの中ではローカルでのパスを指定するものでした。

ただしここには注意が必要で、絶対パスを指定するとSuccessfullyとは出ますがうまくいきません。
訂正) 指定可能でした。 (2019/12/26)

template.yml
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: get connpass info

Resources:
  getConnpassSchedule:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.lambda_handler
      Runtime: python3.6
# パスを指定
      CodeUri: ./deploy_package.zip
      Description: ''
      MemorySize: 512
      Timeout: 120
# lambdaのバージョンのエイリアスを指定(必須)
      AutoPublishAlias: prod
      FunctionName: 'getConnpassSchedule'
# IAMロール
      Role: 'arn:aws:iam::xxxxxxxxxxxx:role/FullAccess'
# デプロイ方式 
      DeploymentPreference:
          Type: Linear10PercentEvery1Minute
デプロイ
$ sam package --template-file template.yml --output-template-file package.yml --s3-bucket YOUR_BUCKET
$ sam deploy --template-file package.yml --stack-name my-date-time-app2 --capabilities CAPABILITY_IAM

s3にzipにしてあげておく。

テンプレートの中のCodeUriS3://〜で始まるURIを指定してsam packageを実行すると生成するパッケージのCodeUriにそのまま反映されます。このケースではS3へのアップロードを踏みません。

ただ、sam packageコマンドでs3へ送ってくれるのであれば良いのではないかと思うのですがそこには差があるのでしょうか?(今後使ってみて探索と言ったところですかね)

Kept1994
社会人2年目のインフラエンジニア兼薬剤師。AWSを用いた開発業務中。基本Inputオタクなので使わない知識が自然淘汰されていく前にOutputして定着を図りたい。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした