Ayu*_*arg 9 amazon-web-services amazon-cloudformation
如何将文件上传到我的 AWS S3 存储桶 CloudFormation 模板?
AWSTemplateFormatVersion: '2010-09-09'
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: PublicRead
BucketName: s3bucketuser
VersioningConfiguration:
Status: Enabled
Run Code Online (Sandbox Code Playgroud)
Ala*_*vey 13
AWS 提供了一个示例宏,可能会有所帮助,具体取决于您的用例:https : //github.com/awslabs/aws-cloudformation-templates/tree/a11722d/aws/services/CloudFormation/MacrosExamples/S3Objects。
S3Objects
,它允许使用Type: AWS::S3::Object
.在提供的示例中,该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 S3Bucket
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}
Run Code Online (Sandbox Code Playgroud)
您无法通过 CloudFormation 上传文件,这是不受支持的,因为 CFN 无权访问您的本地文件系统。
我通常做什么:
cloudformation
从Ansible调用任务Outputs
导出存储桶名称s3_sync
一旦 CFN 完成,Ansible 就会上传在下一个任务中使用的文件。希望有帮助:)