Amazon-Web-Services

通過 cloudformation 腳本將文件從本地機器上傳到 s3 儲存桶

  • February 18, 2021

我編寫了一個 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 儲存桶。那麼答案是肯定的,但這並不簡單或直接。

有兩種方法可以做到這一點。

  1. 創建一個在啟動時上傳文件的 EC2 實例。您可能不想啟動 EC2 實例並讓它執行只是為了送出一個文件,但它會起作用。

  2. 使用 Lambda 支持的自定義資源。有關自定義資源的資訊,請參閱http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html。在 CloudFormation 中,您可以創建 Lambda 函式本身,然後基於該 Lambda 函式創建自定義資源。創建自定義資源後,將呼叫 Lambda 函式,您可以使用該函式呼叫來上傳文件。

請注意,這兩種方法還需要創建一個 IAM 角色來授予執行 S3 上傳所需的權限。

引用自:https://serverfault.com/questions/845205