配置 Amazon EC2 实例,使其与 CodeDeploy 配合使用
这些说明展示了如何配置运行 Amazon Linux、Ubuntu Server、Red Hat Enterprise Linux(RHEL)或 Windows Server 的 Amazon EC2 实例,以便在 CodeDeploy 部署中使用。
注意
如果您没有 Amazon EC2 实例,可以使用 CloudFormation 模板启动一个运行 Amazon Linux 或 Windows Server 的实例。我们不提供适用于 Ubuntu Server 或 RHEL 的模板。
步骤 1:验证 IAM 实例配置文件是否已附加到 Amazon EC2 实例
-
登录 AWS 管理控制台,打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中的 Instances 下,选择 Instances。
-
浏览并在列表中选择您的 Amazon EC2 实例。
-
在详细信息窗格中的描述选项卡上,记下 IAM 角色字段中的值,然后继续下一部分。
如果该字段为空,您可以向实例附加 IAM 实例配置文件。有关信息,请参阅将 IAM 角色附加到实例。
步骤 2:验证附加的 IAM 实例配置文件是否具有正确的访问权限
-
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择角色。
-
浏览并选择您在前一部分的步骤 4 中记下的 IAM 角色名称。
注意
如果您希望使用由 CloudFormation 模板生成的服务角色,而不使用您按照步骤 2:为 CodeDeploy 创建服务角色中的说明创建的服务角色,请注意以下事项:
在一些版本的 CloudFormation 模板中,生成并附加到 Amazon EC2 实例的 IAM 实例配置文件的显示名称与 IAM 控制台中的显示名称不相同。例如,IAM 实例配置文件的显示名称可能为
CodeDeploySampleStack-expnyi6-InstanceRoleInstanceProfile-IK8J8A9123EX,而 IAM 控制台中的 IAM 实例配置文件的显示名称可能为CodeDeploySampleStack-expnyi6-InstanceRole-C5P33V1L64EX。为帮助您标识 IAM 控制台中的实例配置文件,您会看到二者的前缀
CodeDeploySampleStack-expnyi6-InstanceRole是相同的。有关这些显示名称可能不同的原因的信息,请参阅实例配置文件。 -
选择 Trust Relationships 选项卡。如果可信实体中没有显示身份提供商 ec2.amazonaws.com 的条目,则您无法使用此 Amazon EC2 实例。使用使用适用于 CodeDeploy 的实例中的信息停止并创建 Amazon EC2 实例。
如果有显示身份提供商 ec2.amazonaws.com 的条目,并且您仅将应用程序存储在 GitHub 存储库中,则向前跳到步骤 3:为 Amazon EC2 实例添加标签。
如果有显示身份提供商 ec2.amazonaws.com 的条目,并且您将应用程序存储在 Amazon S3 存储桶中,则选择权限选项卡。
-
如果权限策略区域中有一个策略,则展开该策略,然后选择编辑策略。
-
选择 JSON 选项卡。如果您将应用程序存储在 Amazon S3 存储桶中,请确保
"s3:Get*"和"s3:List*"位于指定操作列表中。它可能如下所示:
{"Statement":[{"Resource":"*","Action":[ ... Some actions may already be listed here ... "s3:Get*","s3:List*" ... Some more actions may already be listed here ... ],"Effect":"Allow"}]}也可能如下所示:
如果
"s3:Get*"和"s3:List*"不在指定操作列表中,请选择 Edit 添加它们,然后选择 Save。(如果"s3:Get*"和"s3:List*"都不是列表中的最后一个操作,请确保在操作后添加逗号,以便策略文档进行验证。)注意
我们建议您将此策略仅限定用于您的 Amazon EC2 实例必须访问的 Amazon S3 存储桶。请确保提供对包含 CodeDeploy 代理的 Amazon S3 存储桶的访问权限。否则,在实例上安装或更新 CodeDeploy 代理时可能会出现错误。要仅向 IAM 实例配置文件授予对 Amazon S3 中某些 CodeDeploy 资源工具包存储桶的访问权限,请使用以下策略,但要删除要阻止访问的存储桶的行:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::aws-codedeploy-us-east-2/*", "arn:aws:s3:::aws-codedeploy-us-east-1/*", "arn:aws:s3:::aws-codedeploy-us-west-1/*", "arn:aws:s3:::aws-codedeploy-us-west-2/*", "arn:aws:s3:::aws-codedeploy-ca-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-1/*", "arn:aws:s3:::aws-codedeploy-eu-west-2/*", "arn:aws:s3:::aws-codedeploy-eu-west-3/*", "arn:aws:s3:::aws-codedeploy-eu-central-1/*", "arn:aws:s3:::aws-codedeploy-eu-central-2/*", "arn:aws:s3:::aws-codedeploy-eu-north-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-1/*", "arn:aws:s3:::aws-codedeploy-eu-south-2/*", "arn:aws:s3:::aws-codedeploy-il-central-1/*", "arn:aws:s3:::aws-codedeploy-ap-east-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*", "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*", "arn:aws:s3:::aws-codedeploy-ap-south-1/*", "arn:aws:s3:::aws-codedeploy-ap-south-2/*", "arn:aws:s3:::aws-codedeploy-me-central-1/*", "arn:aws:s3:::aws-codedeploy-me-south-1/*", "arn:aws:s3:::aws-codedeploy-sa-east-1/*" ] } ] }
步骤 3:为 Amazon EC2 实例添加标签
有关如何标记 Amazon EC2 实例以便 CodeDeploy 可以在部署期间找到它的说明,请参阅在控制台中使用标签,然后返回到本页。
注意
您可以使用任何所需的键和值标记 Amazon EC2 实例。只需确保在部署到此实例时指定此密钥和值即可。
步骤 4:在 Amazon EC2 实例上安装 AWS CodeDeploy 代理
有关如何在 Amazon EC2 实例上安装 CodeDeploy 代理并验证其是否运行的说明,请参阅管理 CodeDeploy 代理操作,然后继续使用 CodeDeploy 创建应用程序。