サイトアイコン

toLog

Lambda@EdgeをSAMでデプロイする際はバケットのリージョンにも注意したい

  • 更新日:
  • 投稿日:
サムネイル

この記事は最終更新日から3年以上が経過しています。

リージョン違いについて

Lambda@Edge がサポートされているリージョンは us-east-1 なので、SAM 等で開発した際は、必ず us-east-1 にデプロイする必要があります。

ここで注意したいのは、SAM はデプロイする際にテンプレートが S3 に保存されて、そのテンプレートを CloudFormation が参照してから Stack が立ち上がることです。

そして、先日、私が Lambda@Edge を SAM でデプロイした際のエラーが次です。

1$ sam deploy -g
2
3Configuring SAM deploy
4======================
5
6        Looking for samconfig.toml :  Found
7        Reading default arguments  :  Success
8
9        Setting default arguments for 'sam deploy'
10        =========================================
11        Stack Name []: XXX
12        AWS Region []: us-east-1
13
14
15~略~
16
17
18XXX  Error occurred while GetObject. S3 Error Code:
19
20PermanentRedirect. S3 Error Message: The bucket is in this
21
22region: ap-northeast-1. Please use this region to retry the
23
24request (Service: AWSLambdaInternal; Status Code: 400;
25
26Error Code: InvalidParameterValueException; Request ID:
27
28xxxx2640-xxxx-46aa-xxxx-01fc09cexxxx; Proxy: null)
29
30ROLLBACK_IN_PROGRESS                                          AWS::CloudFormation::Stack                                    sample-lambda                                The following resource(s) failed to create:
31
32[XXX]. . Rollback requested by user.
33DELETE_COMPLETE                                               AWS::Lambda::Function                                         XXX                                 -
34DELETE_IN_PROGRESS                                            AWS::IAM::Role                                                XXXRole                             -
35ROLLBACK_COMPLETE                                             AWS::CloudFormation::Stack                                    sample-lambda                       -
36DELETE_COMPLETE                                               AWS::IAM::Role                                                XXXRole                             -
37-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
38Error: Failed to create/update the stack: sample-lambda, Waiter StackCreateComplete failed: Waiter encountered a terminal failure state

本当に初歩的なミスですが、

us-east-1 へのデプロイなので、us-east-1 内で S3 のテンプレートを取得しようとしているのですが、そのテンプレート ap-northeast-1 にあるよと怒られているエラーです。

本当に初歩ですね 😓

そのため、必ず us-east-1 で S3 を作成して、そこにテンプレートを保存してから、sam deploy する必要があります。

1$ aws s3 mb --region us-east-1 s3://***
2$ aws s3 cp --recursive ./ s3://***

おわりに

ここらへんて、SAM 側が柔軟にリージョン対応してくれると思っていたのですが、何か私のコマンドの使い方や順序が間違っているようにも思えますが、取り敢えず似たようなエラーに遭遇した方の一助になればと思い残しておきます。


プロフィール画像

canji

とにかく私的にサービスを作りたい発作を起こしている。お腹はペコペコ。

  • toLog Tools icon
  • dots icon