本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 使用 Infrastructure Composer AWS SAM 來建置和部署
現在您已完成 設定 以使用 AWS SAMCLI和 Infrastructure Composer 部署,您可以使用 AWS SAM 和 Infrastructure Composer 部署應用程式。本節提供詳細說明如何執行此操作的範例。您也可以參閱《 AWS Serverless Application Model 開發人員指南》中的使用 部署您的應用程式和資源 AWS SAM,以取得使用 部署應用程式的指示 AWS SAM。
此範例說明如何建置和部署 Infrastructure Composer 示範應用程式。示範應用程式具有下列資源:

注意
-
若要進一步了解示範應用程式,請參閱載入和修改 Infrastructure Composer 示範專案。
-
在此範例中,我們使用已啟用本機同步的 Infrastructure Composer。
-
使用 sam build命令來建置應用程式。
$
sam build
... Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Validate SAM template: sam validate [*] Invoke Function: sam local invoke [*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch [*] Deploy: sam deploy --guided會在專案資料夾中 AWS SAMCLI建立
./aws-sam
目錄。此目錄包含應用程式 Lambda 函數的建置成品。以下是專案目錄的輸出:. ├── README.md ├── samconfig.toml ├── src │ ├── CreateItem │ │ ├── index.js │ │ └── package.json │ ├── DeleteItem │ │ ├── index.js │ │ └── package.json │ ├── GetItem │ │ ├── index.js │ │ └── package.json │ ├── ListItems │ │ ├── index.js │ │ └── package.json │ └── UpdateItem │ ├── index.js │ └── package.json └── template.yaml
-
現在,應用程式已準備好進行部署。我們將使用 sam deploy --guided。這可讓您的應用程式準備好透過一系列提示進行部署。
$
sam deploy --guided
... Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [aws-app-composer-basic-api]: AWS Region [us-west-2]: #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [y/N]: #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: #Preserves the state of previously provisioned resources when an operation fails Disable rollback [y/N]: ListItems may not have authorization defined, Is this okay? [y/N]:y
CreateItem may not have authorization defined, Is this okay? [y/N]:y
GetItem may not have authorization defined, Is this okay? [y/N]:y
UpdateItem may not have authorization defined, Is this okay? [y/N]:y
DeleteItem may not have authorization defined, Is this okay? [y/N]:y
Save arguments to configuration file [Y/n]: SAM configuration file [samconfig.toml]: SAM configuration environment [default]:AWS SAMCLI 會顯示將部署項目的摘要:
Deploying with following values =============================== Stack name : aws-app-composer-basic-api Region : us-west-2 Confirm changeset : False Disable rollback : False Deployment s3 bucket : aws-sam-cli-managed-default-samcliamzn-s3-demo-bucket-1b3x26zbcdkqr Capabilities : ["CAPABILITY_IAM"] Parameter overrides : {} Signing Profiles : {}
會先建立 AWS CloudFormation 變更集來 AWS SAMCLI部署應用程式:
Initiating deployment ===================== Uploading to aws-app-composer-basic-api/4181c909ee2440a728a7a129dafb83d4.template 7087 / 7087 (100.00%) Waiting for changeset to be created.. CloudFormation stack changeset --------------------------------------------------------------------------------------------------------------------------------------------- Operation LogicalResourceId ResourceType Replacement --------------------------------------------------------------------------------------------------------------------------------------------- + Add ApiDeploymentcc153d135b AWS::ApiGateway::Deployment N/A + Add ApiProdStage AWS::ApiGateway::Stage N/A + Add Api AWS::ApiGateway::RestApi N/A + Add CreateItemApiPOSTitemsPermissionP AWS::Lambda::Permission N/A rod + Add CreateItemRole AWS::IAM::Role N/A + Add CreateItem AWS::Lambda::Function N/A + Add DeleteItemApiDELETEitemsidPermiss AWS::Lambda::Permission N/A ionProd + Add DeleteItemRole AWS::IAM::Role N/A + Add DeleteItem AWS::Lambda::Function N/A + Add GetItemApiGETitemsidPermissionPro AWS::Lambda::Permission N/A d + Add GetItemRole AWS::IAM::Role N/A + Add GetItem AWS::Lambda::Function N/A + Add Items AWS::DynamoDB::Table N/A + Add ListItemsApiGETitemsPermissionPro AWS::Lambda::Permission N/A d + Add ListItemsRole AWS::IAM::Role N/A + Add ListItems AWS::Lambda::Function N/A + Add UpdateItemApiPUTitemsidPermission AWS::Lambda::Permission N/A Prod + Add UpdateItemRole AWS::IAM::Role N/A + Add UpdateItem AWS::Lambda::Function N/A --------------------------------------------------------------------------------------------------------------------------------------------- Changeset created successfully. arn:aws:cloudformation:us-west-2:513423067560:changeSet/samcli-deploy1677472539/967ab543-f916-4170-b97d-c11a6f9308ea
然後, AWS SAMCLI 部署應用程式:
CloudFormation events from stack operations (refresh every 0.5 seconds) --------------------------------------------------------------------------------------------------------------------------------------------- ResourceStatus ResourceType LogicalResourceId ResourceStatusReason --------------------------------------------------------------------------------------------------------------------------------------------- CREATE_IN_PROGRESS AWS::DynamoDB::Table Items - CREATE_IN_PROGRESS AWS::DynamoDB::Table Items Resource creation Initiated CREATE_COMPLETE AWS::DynamoDB::Table Items - CREATE_IN_PROGRESS AWS::IAM::Role DeleteItemRole - CREATE_IN_PROGRESS AWS::IAM::Role ListItemsRole - CREATE_IN_PROGRESS AWS::IAM::Role UpdateItemRole - CREATE_IN_PROGRESS AWS::IAM::Role GetItemRole - CREATE_IN_PROGRESS AWS::IAM::Role CreateItemRole - CREATE_IN_PROGRESS AWS::IAM::Role DeleteItemRole Resource creation Initiated CREATE_IN_PROGRESS AWS::IAM::Role ListItemsRole Resource creation Initiated CREATE_IN_PROGRESS AWS::IAM::Role GetItemRole Resource creation Initiated CREATE_IN_PROGRESS AWS::IAM::Role UpdateItemRole Resource creation Initiated CREATE_IN_PROGRESS AWS::IAM::Role CreateItemRole Resource creation Initiated CREATE_COMPLETE AWS::IAM::Role DeleteItemRole - CREATE_COMPLETE AWS::IAM::Role ListItemsRole - CREATE_COMPLETE AWS::IAM::Role GetItemRole - CREATE_COMPLETE AWS::IAM::Role UpdateItemRole - CREATE_COMPLETE AWS::IAM::Role CreateItemRole - CREATE_IN_PROGRESS AWS::Lambda::Function DeleteItem - CREATE_IN_PROGRESS AWS::Lambda::Function CreateItem - CREATE_IN_PROGRESS AWS::Lambda::Function ListItems - CREATE_IN_PROGRESS AWS::Lambda::Function UpdateItem - CREATE_IN_PROGRESS AWS::Lambda::Function DeleteItem Resource creation Initiated CREATE_IN_PROGRESS AWS::Lambda::Function GetItem - CREATE_IN_PROGRESS AWS::Lambda::Function ListItems Resource creation Initiated CREATE_IN_PROGRESS AWS::Lambda::Function CreateItem Resource creation Initiated CREATE_IN_PROGRESS AWS::Lambda::Function UpdateItem Resource creation Initiated CREATE_IN_PROGRESS AWS::Lambda::Function GetItem Resource creation Initiated CREATE_COMPLETE AWS::Lambda::Function DeleteItem - CREATE_COMPLETE AWS::Lambda::Function ListItems - CREATE_COMPLETE AWS::Lambda::Function CreateItem - CREATE_COMPLETE AWS::Lambda::Function UpdateItem - CREATE_COMPLETE AWS::Lambda::Function GetItem - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi Api - CREATE_IN_PROGRESS AWS::ApiGateway::RestApi Api Resource creation Initiated CREATE_COMPLETE AWS::ApiGateway::RestApi Api - CREATE_IN_PROGRESS AWS::Lambda::Permission GetItemApiGETitemsidPermissionPro - d CREATE_IN_PROGRESS AWS::Lambda::Permission ListItemsApiGETitemsPermissionPro - d CREATE_IN_PROGRESS AWS::Lambda::Permission DeleteItemApiDELETEitemsidPermiss - ionProd CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ApiDeploymentcc153d135b - CREATE_IN_PROGRESS AWS::Lambda::Permission UpdateItemApiPUTitemsidPermission - Prod CREATE_IN_PROGRESS AWS::Lambda::Permission CreateItemApiPOSTitemsPermissionP - rod CREATE_IN_PROGRESS AWS::Lambda::Permission GetItemApiGETitemsidPermissionPro Resource creation Initiated d CREATE_IN_PROGRESS AWS::Lambda::Permission UpdateItemApiPUTitemsidPermission Resource creation Initiated Prod CREATE_IN_PROGRESS AWS::Lambda::Permission CreateItemApiPOSTitemsPermissionP Resource creation Initiated rod CREATE_IN_PROGRESS AWS::Lambda::Permission ListItemsApiGETitemsPermissionPro Resource creation Initiated d CREATE_IN_PROGRESS AWS::Lambda::Permission DeleteItemApiDELETEitemsidPermiss Resource creation Initiated ionProd CREATE_IN_PROGRESS AWS::ApiGateway::Deployment ApiDeploymentcc153d135b Resource creation Initiated CREATE_COMPLETE AWS::ApiGateway::Deployment ApiDeploymentcc153d135b - CREATE_IN_PROGRESS AWS::ApiGateway::Stage ApiProdStage - CREATE_IN_PROGRESS AWS::ApiGateway::Stage ApiProdStage Resource creation Initiated CREATE_COMPLETE AWS::ApiGateway::Stage ApiProdStage - CREATE_COMPLETE AWS::Lambda::Permission CreateItemApiPOSTitemsPermissionP - rod CREATE_COMPLETE AWS::Lambda::Permission UpdateItemApiPUTitemsidPermission - Prod CREATE_COMPLETE AWS::Lambda::Permission ListItemsApiGETitemsPermissionPro - d CREATE_COMPLETE AWS::Lambda::Permission DeleteItemApiDELETEitemsidPermiss - ionProd CREATE_COMPLETE AWS::Lambda::Permission GetItemApiGETitemsidPermissionPro - d CREATE_COMPLETE AWS::CloudFormation::Stack aws-app-composer-basic-api - ---------------------------------------------------------------------------------------------------------------------------------------------
最後會顯示訊息,通知您部署成功:
Successfully created/updated stack - aws-app-composer-basic-api in us-west-2