我正在尝试在我的 Amazon Linux 中下载 AWS Codedeploy 代理文件。我按照 http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-run-agent.html 中提到的说明,对于 Amazon Linux,创建了适当的实例配置文件、服务角色等。一切都是最新的(亚马逊 Linux,CLI 包,它是一个全新的实例,我已经尝试了至少 3 个全新的实例,结果相同)。所有实例都具有完全的出站互联网访问权限。
但是以下从 S3 下载安装的语句总是失败,
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . --region us-east-1
有错误,调用 HeadObject 操作时发生客户端错误 (403):禁止已完成 1 部分 ...剩余文件
任何人都可以帮助我解决此错误吗?
根据 IAM 实例配置文件的 Codedeploy 文档,我想出了问题所在
http://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-create-iam-instance-profile.html
需要为您的 IAM 实例配置文件授予以下权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
但我将资源限制在我的代码存储桶中,因为我不希望我的实例直接访问其他存储桶。但事实证明,我还需要为 aws-codedeploy-us-east-1/* s3 资源授予额外的权限,以便能够下载代理。这在为 Codedeploy 设置 IAM 实例配置文件的文档中不是很清楚。
更有效的限制性策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"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-ap-south-1/*",
"arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
"arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",
"arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
"arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
"arn:aws:s3:::aws-codedeploy-eu-central-1/*",
"arn:aws:s3:::aws-codedeploy-eu-west-1/*",
"arn:aws:s3:::aws-codedeploy-sa-east-1/*"
]
}
]
}