我写了一个cloudformation脚本,用于创builds3存储桶,使用版本控制和生命周期规则。 现在我想从本地机上传一个文件(文本文件)到新创build的S3桶,但我不想手动做。 有没有什么办法可以给我的文件在cloudForms脚本或任何其他build议path? 这是我的CF脚本
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "S3Bucket" : { "Type" : "AWS::S3::Bucket", "Properties" : { "AccessControl" : "PublicRead", "BucketName" : "s3testdemo", "LifecycleConfiguration": { "Rules": [ { "Id": "GlacierRule", "Status": "Enabled", "ExpirationInDays": "365", "Transition": { "TransitionInDays": "30", "StorageClass": "Glacier" } } ] }, "VersioningConfiguration" : { "Status" : "Enabled" } } } } }
如果我正确地理解了你的话,你就会问是否有办法通过创build存储桶的CloudFormation堆栈将file upload到S3存储桶。 那么答案是肯定的,但不是简单的或直接的。
有两种方法可以做到这一点。
1)创build一个启动时上传文件的EC2实例。 你可能不想启动一个EC2实例,只需要提交一个文件就可以运行,但是它可以工作。
2)使用Lambda支持的自定义资源。 有关自定义资源的信息,请参阅http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html 。 在CloudFormation中,您可以自己创buildLambda函数,然后根据该Lambda函数创build自定义资源。 当创build自定义资源时,Lambda函数将被调用,您可以使用该函数调用来上传文件。
请注意,这两种方法还需要创build一个IAMangular色来授予执行S3上传所需的权限。