0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS SAM 覚え書き

Last updated at Posted at 2024-08-18

SAM の記事なんて今さらですけどねー。今まで長らくお世話になってきた Serverless Framework が v4 からはどうも商用では有償になるらしいですし(厳密には組織の収益規模によるようですが、細かいことは気にしない…)、Serverless Framework を使い続けることで Dependabot くんに「脆弱性あるよ早く対処しな!」と頻繁にせかされるのもいいかげんしんどくなってきたので、SAM に乗り換えるのもいいかな、と。 CDK はコードをぐちゃぐちゃ書かないといけないのでメンドクサイ

ここでは、忘れそうになることを箇条書きでメモするだけです。役に立つ記事とかそういうのはよそを当たってください…。

Lambda 実行ロール

Lambda 実行ロールへの基本的な管理ポリシーの付与は SAM が暗黙にやってくれるので、S3 とか DynamoDB とか自分のリソースへのアクセス権限をポリシーテンプレートなりなんなりで追加すればよい。

  • 何も書かなくても、自動的に AWSLambdaBasicExecutionRole ポリシーが付与される。これによって CloudWatch Logs ロググループ・ログストリームの作成、ログの書き込みが可能になる。template.yaml にわざわざロググループのリソース定義を書く必要はない
  • VpcConfig を指定した Lambda には自動的に AWSLambdaVPCAccessExecutionRole ポリシーが付与される。これによって ENI の脱着が可能になる
  • Tracing: Active が指定されると自動的に AWSXrayWriteOnlyAccess ポリシーが付与される

(今後もっと増える、かも。)

Lambda バージョン・エイリアス

  • SAM で単純にデプロイしただけではバージョン・エイリアスどちらも作成されない
  • AutoPublishAlias 等を指定すれば作成される
  • 一度 AutoPublishAlias 指定でエイリアスをデプロイしておくと、2回目以降は DeploymentPreference と併用することで CodeDeploy による blug/green デプロイ的なことができる (CodeDeploy は「前」がないとうまく動かない 融通の利かない サービスなので、初回は AutoPublishAlias だけ、2回目以降に DeploymentPreference も付けるといった手順が必要)
  • Function URL ( FunctionUrlConfig ) を業務用途で使う人はあまりいないと思われるが、 FunctionUrlConfig AutoPublishAlias DeploymentPreference の 3 つを併用すると Function URL が (定義は残っているにもかかわらず) アクセスできなくなるという問題が発生した。 公式ドキュメント を見る限り下記のように書いてあるので SAM が Function URL に対応していないということはなさそうだが、CodeDeploy と組み合わせると Function URL 接続先のエイリアスがうまく切り替わらないといった制限があるのかもしれない

If you specify an AutoPublishAlias for your Lambda function, the endpoint connects to the specified function alias.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?