AWS SAMでLambdaの構築が便利になったものの、Hello World Example
で作成されるテンプレにはS3の権限がついていません。
なので、S3にオブジェクトを読み書きさせたいときには、下のようにtemplate.yaml
を編集して権限をつける必要があります。
Globals:
Function:
Timeout: 3
MemorySize: 1000
+Parameters:
+ S3BucketName:
+ Type: String
+ Default: "アクセスしたいバケット名"
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
PackageType: Image
Architectures:
- x86_64
+ Policies:
+ - S3WritePolicy:
+ BucketName: !Ref S3BucketName
Metadata:
Dockerfile: Dockerfile
DockerContext: ./hello_world
DockerTag: python3.9-v1
あとはLambdaからboto3などでよしなにしましょう。
なお、今回はS3WritePolicy
でしたが、もちろん他のポリシーも付けられます。