簡體   English   中英

如何從 CloudFormation 中的另一個堆棧導入現有的 S3 存儲桶?

[英]How to import existing S3 bucket from another stack in CloudFormation?

我想導入在另一個堆棧中創建的現有 S3 存儲桶。 我嘗試使用下面的兩個 CF 模板來做到這一點,但是當我嘗試創建消費者堆棧時,它會導致 CREATE_FAILED 事件並顯示“已存在”錯誤消息。

生產者模板:

"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Main stack that creates S3 bucket.",
"Resources": {
"myS3Bucket" : {
      "Type" : "AWS::S3::Bucket",
      "DeletionPolicy" : "Retain",
      "Properties": {"BucketName": "bucket-name" }
    }
},
"Outputs": {
    "BucketId": {
        "Description": "Bucket ID",
        "Value": { "Ref": "myS3Bucket" },
        "Export": { "Name": { "Fn::Sub": "${AWS::StackName}-BUCKETID" }}
        }
    }
} 

這是一個消費者堆棧模板:

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "AWS CloudFormation Sample Template.",
    "Resources" : { 
        "S3ImportedBucket" : {  
            "Type" : "AWS::S3::Bucket",
            "Properties" : {
                "BucketName" : { "Fn::ImportValue" : "main-BUCKETID"} 
            }
        }
    }
}

應該在模板中更改什么才能使其工作?

tl; dr輸出的概念是正確的,但您以錯誤的方式使用它

解釋在 cloudformation 模板中,您正在發布

兩者都創建了一個具有相同名稱的 s3 存儲桶類型的資源,因此首先運行的將創建 s3 存儲桶

你可以在這里查看以供參考

但是,輸出可以用作其他模板中的參考,例如如果您從 lambda 上傳某些內容,那么您可以將該存儲桶設置為 env var 並在 lambda 中使用它(只是一個示例)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM