Docker EC2 中的容器无法通过 AWS SDK 将数据写入 AWS S3
Docker container in EC2 is unable to write data into AWS S3 through AWS SDK
我在 AWS EC2 实例上有一台 docker 机器 运行。假设通过SDK客户端上传数据到S3。
- docker 机器在 EC2 实例中创建并使用以下命令
--driver amazonec2 \
--amazonec2-open-port ${open-port} \
--amazonec2-region ${region} \
--amazonec2-access-key ${access-key} \
--amazonec2-secret-key ${secret-key} \
--amazonec2-instance-type ${instance_type} \
--amazonec2-ami ${this.ami} \
--amazonec2-security-group ${security_group_name} \
--swarm \
--swarm-discovery token://${swarm_join_token} \
--swarm-addr ${ip_address};
- 我使用 S3fullAccess 创建了 IAM 用户并且还允许 public 访问
S3 full access screen shot
public access screen shot
- S3 存储桶策略是
"Version": "2012-10-17",
"Id": "Policyxxx",
"Statement": [
{
"Sid": "Stmtxxx",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxx"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::xxx",
"arn:aws:s3:::xxx/*"
]
}
]
}
一直显示error: AccessDenied: Access Denied
。有人可以帮助我吗?
从 EC2 实例上的容器 运行 访问 S3 不是由您的 IAM 用户凭据决定的。相反,您应该使用 S3 权限设置 IAM role/profile for the instance,然后使用 docker-machine
:
选项提供 role/profile 名称
--amazonec2-iam-instance-profile
如果您使用 AWS CLI 或 SDK,实例的权限将在容器内可用。
而不是存储桶策略,它更容易添加 S3 权限到实例角色。
我在 AWS EC2 实例上有一台 docker 机器 运行。假设通过SDK客户端上传数据到S3。
- docker 机器在 EC2 实例中创建并使用以下命令
--driver amazonec2 \
--amazonec2-open-port ${open-port} \
--amazonec2-region ${region} \
--amazonec2-access-key ${access-key} \
--amazonec2-secret-key ${secret-key} \
--amazonec2-instance-type ${instance_type} \
--amazonec2-ami ${this.ami} \
--amazonec2-security-group ${security_group_name} \
--swarm \
--swarm-discovery token://${swarm_join_token} \
--swarm-addr ${ip_address};
- 我使用 S3fullAccess 创建了 IAM 用户并且还允许 public 访问 S3 full access screen shot
public access screen shot
- S3 存储桶策略是
"Version": "2012-10-17",
"Id": "Policyxxx",
"Statement": [
{
"Sid": "Stmtxxx",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxx"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::xxx",
"arn:aws:s3:::xxx/*"
]
}
]
}
一直显示error: AccessDenied: Access Denied
。有人可以帮助我吗?
从 EC2 实例上的容器 运行 访问 S3 不是由您的 IAM 用户凭据决定的。相反,您应该使用 S3 权限设置 IAM role/profile for the instance,然后使用 docker-machine
:
--amazonec2-iam-instance-profile
如果您使用 AWS CLI 或 SDK,实例的权限将在容器内可用。
而不是存储桶策略,它更容易添加 S3 权限到实例角色。