本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 4:为 AmazAmazon EC2 实例创建 IAmazon EC2 实例配置文件
如果您使用的是 Amazon ECS 或Amazon Lambda 计算平台,请跳过此步骤。亚马逊 ECS 部署部署 Amazon ECS 服务,AmazonLambda 部署部署部署无服务器 Lambda 函数版本,因此不需要为 Amazon EC2 实例提供实例配置文件。
您的 Amazon EC2 实例需要权限才能访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库。要启动与兼容的 Amazon EC2 实例 CodeDeploy,您必须创建额外的 IAM 角色,即实例配置文件。这些说明向您展示如何创建 IAAmazon EC2 实例配置文件以附加到您的 Amazon EC2 实例。此角色 CodeDeploy 授予访问存储应用程序的 Amazon S3 存储桶或存储 GitHub 库的权限。
您可以使用Amazon CLI、IAM 控制台或 IAM API 创建 IAM 实例配置文件。
您可以将 IAM 实例配置文件附加到 Amazon EC2 实例(在启动该实例时)或之前启动的实例。有关更多信息,请参阅实例配置文件。
为 AmazzEC2 实例 (CLI) 创建 IAmazon EC2 实例
在这些步骤中,我们假定您已遵循入门 CodeDeploy中前三步的说明。
-
在您的开发计算机上,创建一个名为
CodeDeployDemo-EC2-Trust.json
的文本文件。粘贴以下内容,允许 Amazon EC2 代表您工作:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "ec2.cn-north-1.amazonaws.com", "ec2.cn-northwest-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
在相同的目录中,创建一个名为
CodeDeployDemo-EC2-Permissions.json
的文本文件。粘贴以下内容:{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
注意 我们建议您将此策略仅限于您的 Amazon EC2 实例必须访问的 Amazon S3 存储桶。确保授予对包含 CodeDeploy 代理的 Amazon S3 存储桶的访问权限。否则,在实例上安装或更新 CodeDeploy 代理时可能会出现错误。例如:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
注意 如果您想使用 IAM 授权或 AAmazon Virtual Private Cloud (VPC) 终端节点,则需要添加更多权限。 CodeDeploy有关更多信息,请参阅 CodeDeploy 与 Amazon Virtual Private Cloud 一起使用。
-
在同一目录中,根据第一个文件中的信息调用create-role命令创建名为
CodeDeployDemo-EC2-Instance-Profile
的 IAM 角色:重要 务必在文件名前包含
file://
。此命令中需要该项。aws iam create-role --role-name CodeDeployDemo-EC2-Instance-Profile --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json
-
从同一目录调用 put-role-policy 命令,根据第二个文件中的信息为名为
CodeDeployDemo-EC2-Instance-Profile
的角色提供权限:重要 务必在文件名前包含
file://
。此命令中需要该项。aws iam put-role-policy --role-name CodeDeployDemo-EC2-Instance-Profile --policy-name CodeDeployDemo-EC2-Permissions --policy-document file://CodeDeployDemo-EC2-Permissions.json
-
调用attach-role-policy向角色授予 Amazon EC2 Systems Manager 权限,以便 SSM 可以安装 CodeDeploy 代理。如果您计划使用命令行从公共 Amazon S3 存储桶安装代理,则不需要此策略。了解有关安装 CodeDeploy 代理的详细信息。
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore --role-name CodeDeployDemo-EC2-Instance-Profile
-
先调用create-instance-profile命令,然后调用add-role-to-instance-profile命令来创建名为的 IAM 实例配置文件
CodeDeployDemo-EC2-Instance-Profile
。实例配置文件允许 Amazon EC2 将名为CodeDeployDemo-EC2-Instance-Profile
AmazAmazAmazEmazEC2 实例的 IAmazon EC2 角色传递到该实例:aws iam create-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile aws iam add-role-to-instance-profile --instance-profile-name CodeDeployDemo-EC2-Instance-Profile --role-name CodeDeployDemo-EC2-Instance-Profile
如果您需要获取 IAM 实例配置文件的名称,请参阅Amazon CLI参考资料的 IAM 部分中的 list-instance-profiles-for- role。
您现已创建一个 IAAmazon EC2 实例配置文件以附加到您的 Amazon EC2 实例。有关更多信息,请参阅《Amazz AmazAmazon EC2 用户指南》中的适用 Amazon EC2
为 AmazzEC2 实例创建 IAmazon EC2 实例配置文件(控制台)
登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在 IAAM 控制台的导航窗格中,选择 P olicy(创建策略)。(如果 Get Started 按钮出现,选择此按钮,然后选择 Create Policy。)
-
在创建策略页面上的 JSON 选项卡中粘贴以下内容:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:Get*", "s3:List*" ], "Effect": "Allow", "Resource": "*" } ] }
注意 我们建议您将此策略仅限于您的 Amazon EC2 实例必须访问的 Amazon S3 存储桶。确保授予对包含 CodeDeploy 代理的 Amazon S3 存储桶的访问权限。否则,在实例上安装或更新 CodeDeploy 代理时可能会出现错误。例如:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::replace-with-your-s3-bucket-name/*", "arn:aws:s3:::aws-codedeploy-cn-north-1/*", "arn:aws:s3:::aws-codedeploy-cn-northwest-1/*" ] } ] }
注意 如果您想使用 IAM 授权或 AAmazon Virtual Private Cloud (VPC) 终端节点,则需要添加更多权限。 CodeDeploy有关更多信息,请参阅 CodeDeploy 与 Amazon Virtual Private Cloud 一起使用。
-
选择Review policy(查看策略)。
-
在创建策略页面上,在
CodeDeployDemo-EC2-Permissions
策略名称框中键入 。 -
(可选) 对于描述,键入策略的描述。
-
请选择Create Policy(创建策略)。
在导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)。
-
在创建角色页面上,选择 Amazon 服务,然后从选择将使用此角色的服务列表中,选择 EC2。
-
从选择您的使用案例列表中,选择 EC2。
选择Next: Permissions(下一步: 权限)。
-
在策略列表中,选中您刚创建策略旁边的复选框(CodeDeployDemo-EC2-Permies)旁边的复选框。如有必要,请使用搜索框查找该策略。
-
要使用 Systems Manager 安装或配置 CodeDeploy 代理,请选择 AmazAmazSSM 旁边的框ManagedInstanceCore。此 Amazon 托管策略使实例能够使用 Systems Manager 服务核心功能。如有必要,请使用搜索框查找该策略。如果您计划使用命令行从公共 Amazon S3 存储桶安装代理,则不需要此策略。了解有关安装 CodeDeploy 代理的详细信息。
-
选择下一步: 标签。
-
保持添加标签(可选)页面不变,然后选择下一步:查看。
-
在查看页面的角色名称中,输入服务角色的名称(例如,
CodeDeployDemo-EC2-Instance-Profile
),然后选择创建角色。您也可以在角色描述中输入此服务角色的描述。
您现已创建一个 IAAmazon EC2 实例配置文件以附加到您的 Amazon EC2 实例。有关更多信息,请参阅《Amazz AmazAmazon EC2 用户指南》中的适用 Amazon EC2