Amazon web services 如何为Fargate任务授予上载到S3的正确权限
我想从Fargate任务上传到S3。这可以通过仅指定ExecutionRoleArn而不是同时指定ExecutionRoleArn和TaskRoleArn来实现吗 如果我指定的ExecutionRoleArn附加了以下权限策略: 自定义策略:Amazon web services 如何为Fargate任务授予上载到S3的正确权限,amazon-web-services,amazon-iam,amazon-ecs,aws-fargate,Amazon Web Services,Amazon Iam,Amazon Ecs,Aws Fargate,我想从Fargate任务上传到S3。这可以通过仅指定ExecutionRoleArn而不是同时指定ExecutionRoleArn和TaskRoleArn来实现吗 如果我指定的ExecutionRoleArn附加了以下权限策略: 自定义策略: { "Version": "2012-10-17", "Statement": [ { "Effect": "
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::example_bucket/*"
}
]
}
AmazonECSTaskExecutionRolePolicy:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
具有以下信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"events.amazonaws.com",
"lambda.amazonaws.com",
"ecs-tasks.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
这是否足以允许任务上载到S3?或者我需要定义TaskRoleArn吗?服务使用
ExecutionRoleArn
正确设置任务,这包括从ECR下拉任何图像
任务使用TaskRoleArn
为其提供与其他AWS服务(如S3)交互所需的权限
从技术上讲,两个ARN可以是相同的,但是我建议将它们划分为不同的角色,以避免混淆角色用于的两种场景所需的权限
此外,您还应该拥有ecs.amazonaws.com的端点。事实上,根据您使用ECS的方式,下面列出了完整的服务列表(尽管大多数服务都可以删除,例如,如果您不使用spot,则可以删除spot,如果您不使用autoscaling,则可以删除autoscaling)
您的策略不包括任何
s3
相关权限。因此,您应该在以下位置定义您的s3
权限:
使用Amazon ECS任务的IAM角色,您可以指定任务中的容器可以使用的IAM角色
在Fargate的案例中,两个IAM角色支付不同的角色
- 执行角色
任务角色
要产生此错误,只需设置执行角色=None,您将无法启动任务
- 任务角色
- 创建ecs\u s3\u上传\u角色
- 添加以下策略
现在Fargate Task将能够上传到S3 bucket。很好地解释了这两个角色之间的区别。
"ecs.amazonaws.com",
"ecs-tasks.amazonaws.com",
"spot.amazonaws.com",
"spotfleet.amazonaws.com",
"ecs.application-autoscaling.amazonaws.com",
"autoscaling.amazonaws.com"
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::example_bucket/*"
}
]
}