本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
上傳本機成品到 S3 儲存貯體
對於某些需要 Amazon S3 位置 (儲存貯體名稱和檔案名稱) 的資源屬性,您可以改為指定本機參考。例如,您可以指定 AWS Lambda 函數原始程式碼的 S3 位置或 Amazon API Gateway REST API 的 OpenAPI (以前稱為 Swagger) 檔案。您不需要手動上傳檔案到 S3 儲存貯體,然後將位置新增到您的範本,您可以在您的範本中指定本機參考 (稱為本機成品),然後使用 package
命令來快速上傳。本機成品是 package
命令上傳至 Amazon S3 的檔案或資料夾的路徑。例如,成品可以是 AWS Lambda 函數原始程式碼的本機路徑,也可以是 Amazon API Gateway REST API 的 OpenAPI 檔案。
如果您指定檔案,命令會將它直接上傳至 S3 儲存貯體。上傳成品之後,命令會傳回範本的副本,以命令上傳成品的 S3 位置取代本機成品的參考。然後,您可以使用傳回的範本來建立或更新堆疊。
如果您指定資料夾,命令將建立該資料夾的 .zip 檔案,然後上傳 .zip 檔案。如果您不指定路徑,命令將建立工作目錄的 .zip 檔案,然後上傳。您可以指定絕對或相對路徑,相對路徑相對於範本的位置。
您只能在 package
命令支援的資源屬性中使用本機成品。如需有關此命令和受支援資源屬性清單的詳細資訊,請參閱 AWS CLI 命令參考中的 aws cloudformation package
命令。
以下範本指定用於 Lambda 函數原始程式碼的本機成品。原始程式碼存放在使用者的 /home/user/code/lambdafunction
資料夾。
原始範本
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Resources": { "MyFunction": { "Type": "AWS::Serverless::Function", "Properties": { "Handler": "index.handler", "Runtime": "nodejs18.x", "CodeUri": "/home/user/code/lambdafunction" } } } }
以下命令會建立一個 .zip 檔案,其中包含該函數的原始程式碼資料夾,然後將 .zip 檔案上傳至 my-bucket
儲存貯體的根資料夾。
套件命令
aws cloudformation package \ --template /path_to_template/template.json \ --s3-bucket mybucket \ --output-template-file packaged-template.json \ --use-json
此命令會儲存範本,它會產生至 --output
選項指定的路徑。此命令會以 Amazon S3 位置取代成品,如以下範例所示:
產生範本
{
"AWSTemplateFormatVersion": "2010-09-09",
"Transform": "AWS::Serverless-2016-10-31",
"Resources": {
"MyFunction": {
"Type": "AWS::Serverless::Function",
"Properties": {
"Handler": "index.handler",
"Runtime": "nodejs18.x",
"CodeUri": "s3://mybucket/<md5 checksum>
"
}
}
}
}