AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
當我使用 CloudFormation 佈建 Amazon EC2 執行個體時,如何確定已部署 CodeDeploy 代理程式?
我正在使用 AWS CloudFormation 佈建基礎架構和 AWS CodeDeploy 資源。我想要確定已在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上安裝並執行 CodeDeploy 代理程式。
簡短描述
如果您建立下列任一資源作為 CodeDeploy 部署的目標,請使用 cfn-init 和 cfn-signal 助手指令碼:
- AWS::EC2::Instance
- AWS::AutoScaling::AutoScalingGroup
佈建基礎架構部署之前,您可以使用助手指令碼,透過 CodeDeploy 代理程式完整佈建目標執行個體。
解決方法
若要使用 cfn-init 和 cfn-signal 助手指令碼來部署 CodeDeploy 代理程式,請完成下列步驟以正確設定 AWS CloudFormation 範本。
1. 在程式碼編輯器中,建立 JSON 或 YAML 檔案以用作資源的 AWS CloudFormation 範本。
2. 對於 Metadata 索引鍵,請使用 AWS::CloudFormation::Init 類型以包含執行個體或啟動組態的中繼資料。
使用 AWS::CloudFormation::Init 類型的 Metadata 索引鍵範例
"SampleLinuxInstance" : { "Type" : "AWS::EC2::Instance", "Metadata" : { "AWS::CloudFormation::Init" : { "config" : { "packages" : { "yum" : { "ruby" : [] } }, "files" : { "/home/ec2-user/install" : { "source" : {"Fn::Join" : ["", ["https://aws-codedeploy-", {"Ref" : "AWS::Region"}, ".s3.amazonaws.com/latest/install"]]}, "mode" : "000755" } }, "commands" : { "00-install-agent" : { "command" : "./install auto", "cwd" : "/home/ec2-user/" }, "01-cfn-signal" : { "command" : {"Fn::Join" : ["", ["/opt/aws/bin/cfn-signal -e 0 --stack ", { "Ref": "AWS::StackName" }, " --resource SampleLinuxInstance --region ", { "Ref" : "AWS::Region" }]]} } } } } }, "Properties" : { ... } }
注意:AWS::CloudFormation::Init 類型包含 CodeDeploy 代理程式的安裝步驟。它還包含在您完成下列步驟後向 CloudFormation 堆疊傳回信號的命令。
3. 設定 UserData 屬性以叫用 cfn-init 指令碼。
叫用 cfn-init 指令碼的 UserData 屬性範例
"Properties" : { "InstanceType" : "t2.micro", "ImageId" : {"Ref" : "AMI"}, "IamInstanceProfile" : {"Ref" : "SampleInstanceProfile"}, "KeyName" : {"Ref" : "SSHKey"}, "UserData" : {"Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash\n", "yum -y update\n", "yum -y install cfn-bootstrap\n", "/opt/aws/bin/cfn-init -v", " --stack ", { "Ref" : "AWS::StackName" }, " --resource SampleLinuxInstance", " --region ", { "Ref" : "AWS::Region" }, "\n" ]] }}, "Tags" : [ { "Key" : {"Ref" : "InstanceTagKey"}, "Value" : {"Ref" : "InstanceTagValue"} } ] }
4. 對於執行個體資源,請設定 CreationPolicy 屬性以執行下列操作: 要求 Amazon EC2 執行個體或 Amazon EC2 Auto Scaling 群組,在特定時間段內將成功信號傳送至 CloudFormation。
要求 Amazon EC2 執行個體在特定時間段內將成功信號傳送至 CloudFormation 的 CreationPolicy 屬性範例
"SampleLinuxInstance" : { "Type" : "AWS::EC2::Instance", "CreationPolicy" : { "ResourceSignal" : { "Count" : "1", "Timeout" : "PT5M" } },
5. 若要為 Amazon EC2 執行個體或 Amazon EC2 Auto Scaling 群組上的部署群組資源建立明確的相依性,請使用 DependsOn 屬性。
為部署群組資源建立明確相依性的 DependsOn 屬性範例
"SampleLinuxCDDeploymentGroup" : { "Type" : "AWS::CodeDeploy::DeploymentGroup", "DependsOn" : "SampleLinuxInstance", "Properties" : { "ApplicationName" : {"Ref" : "SampleCDApp"}, "ServiceRoleArn" : {"Ref" : "ServiceRole"}, "Ec2TagFilters" : [ { "Key" : {"Ref" : "InstanceTagKey"}, "Value" : {"Ref" : "InstanceTagValue"}, "Type" : "KEY_AND_VALUE" } ], "Deployment" : { "Revision" : { "RevisionType" : "S3", "S3Location" : { "Bucket" : {"Ref" : "BucketName"}, "BundleType" : {"Ref" : "BundleType"}, "Key" : {"Ref" : "BundleKey"} } } } } }
6. 若要完成 CloudFormation 範本,請包含您環境所需的任何其他額外資源、屬性或輸出。
7. 使用完成的範本建立 CloudFormation 堆疊。
相關資訊
- 語言
- 中文 (繁體)
