本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對於某些需要 Amazon S3 位置 (儲存貯體名稱和檔案名稱) 的資源屬性,您可以改為指定本機參考。例如,您可以指定 AWS Lambda 函數的原始程式碼或 Amazon API Gateway REST API 的 OpenAPI (前身為 Swagger) 檔案在 S3 的位置。您可以指定範本中的本機參考,稱為本機成品,然後使用 CLI package 命令快速上傳檔案,而不是手動將檔案上傳至 S3 儲存貯體,然後將位置新增至範本。本機成品是 package 命令上傳至 Amazon S3 的檔案或資料夾的路徑。例如,成品可以是 AWS Lambda 函數原始碼的本機路徑,也可以是 Amazon API Gateway REST API 的 OpenAPI 檔案。
如果您指定檔案,命令會將它直接上傳至 S3 儲存貯體。上傳成品之後,命令會傳回範本的副本,以命令上傳成品的 S3 位置取代本機成品的參考。然後,您可以使用傳回的範本來建立或更新堆疊。
如果您指定資料夾,命令會建立資料夾.zip
的檔案,然後上傳.zip
檔案。如果您未指定路徑,命令會為工作目錄建立.zip
檔案,然後上傳。您可以指定絕對或相對路徑,相對路徑相對於範本的位置。
您只能在 package 命令支援的資源屬性中使用本機成品。如需此命令的詳細資訊和支援的資源屬性清單,請參閱 AWS CLI 命令參考中的 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"
}
}
}
}
下列package命令會建立包含函數原始程式碼資料夾.zip
的檔案,然後將.zip
檔案上傳至
儲存貯體的根資料夾。amzn-s3-demo-bucket
package
命令
aws cloudformation package --s3-bucket
amzn-s3-demo-bucket
\ --template/path_to_template/template.json
\ --output-template-filepackaged-template.json
\ --output json
此命令會儲存範本,它會產生至 --output-template-file
選項指定的路徑。此命令會以 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://amzn-s3-demo-bucket
/<md5 checksum>
"
}
}
}
}