Amazon-Web-Services
通過 cloudformation 腳本將文件從本地機器上傳到 s3 儲存桶
我編寫了一個 cloudformation 腳本,用於創建具有版本控制和生命週期規則的 s3 儲存桶。現在我想將一個文件(文本文件)從我的本地機器上傳到新創建的 s3 儲存桶,但我不想手動進行。有什麼辦法可以在 cloudformation 腳本或任何其他建議中給出我的文件的路徑?這是我的 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" } } } } }
如果我對您的理解正確,您是在詢問是否有辦法通過創建儲存桶的 CloudFormation 堆棧將文件上傳到 S3 儲存桶。那麼答案是肯定的,但這並不簡單或直接。
有兩種方法可以做到這一點。
創建一個在啟動時上傳文件的 EC2 實例。您可能不想啟動 EC2 實例並讓它執行只是為了送出一個文件,但它會起作用。
使用 Lambda 支持的自定義資源。有關自定義資源的資訊,請參閱http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html。在 CloudFormation 中,您可以創建 Lambda 函式本身,然後基於該 Lambda 函式創建自定義資源。創建自定義資源後,將呼叫 Lambda 函式,您可以使用該函式呼叫來上傳文件。
請注意,這兩種方法還需要創建一個 IAM 角色來授予執行 S3 上傳所需的權限。