AWS S3バケットのCloudFormationテンプレートにファイルをアップロードするにはどうすればよいですか?
AWSTemplateFormatVersion: '2010-09-09'
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: PublicRead
BucketName: s3bucketuser
VersioningConfiguration:
Status: Enabled
CloudFormationを介してファイルをアップロードすることはできません。CFNがローカルファイルシステムにアクセスできないため、サポートされていません。
私が通常行うこと:
cloudformation
タスクを呼び出しますOutputs
にバケット名をエクスポートしますs3_sync
を使用してファイルをアップロードします。それが役に立てば幸い:)
AWSはサンプル Macro を提供していますが、これはユースケースによって異なります: https://github.com/awslabs/aws-cloudformation-templates/tree/a11722d/aws/services/ CloudFormation/MacrosExamples/S3Objects 。
S3Objects
を参照するType: AWS::S3::Object
を参照する最上位の Transform セクションに注意してください。提供されている example では、Body
プロパティにより、YAMLまたはJSONテンプレートに直接テキストを入力できます。それを拡張するには、 Fn :: Sub を使用して、他のリソースからのパラメーターまたはプロパティを含むファイルを作成します。
---
AWSTemplateFormatVersion: '2010-09-09'
Transform: S3Objects
Parameters:
ANameField:
Type: String
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: PublicRead
BucketName: s3bucketuser
VersioningConfiguration:
Status: Enabled
S3Object:
Type: AWS::S3::Object
Properties:
Target:
Bucket: !Ref Bucket
Key: README.md
ContentType: text/markdown
Body: !Sub |
# My text file
This is my text file for ${ANameField}.
The region is ${AWS::Region} and my account ID is ${AWS::AccountId}.
This file is in the ${S3Bucket} bucket. The bucket ARN is ${S3Bucket.Arn},
and its website endpoint is ${S3Bucket.WebsiteURL}