来自特定 AWS Batch 权限的作业
Jobs from specific AWS Batch permissions
如何只允许来自特定 AWS Batch 队列的作业(并基于特定的作业描述)发布到特定的 SNS 主题?
我想通过声明附加到作业 IAM 策略:
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": ["<arn of the specific SNS topic"]
"Condition": {"ArnEquals": {"aws:SourceArn": "arn:aws:???"}}
}
但是源 ARN 应该是什么?作业队列的 ARN,作业定义的 ARN?或者也许这应该完全不同地设置?
我在处理在 Fargate 容器中执行的 AWS Batch 作业时有过类似的经历,这些作业在分配角色和权限的范围内遵循与 ECS 相同的原则。
如果您要从容器内执行的代码向特定主题发布消息,那么您应该创建一个具有必要权限的角色,然后在 JobRoleArn
property 中使用其 ARN你的工作定义。
例如(下面的代码可能有一些小错误,但我只是想在这里解释一下这个概念):
角色 cloudformation:
"roleresourceID": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"AWS": "*"
}
}
],
"Version": "2012-10-17"
},
"RoleName": "your-job-role"
}
}
附加到角色的政策:
"policyresourceid": {
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyDocument": {
"Statement": [
{
"Action": "sns:Publish",
"Effect": "Allow",
"Resource": "<arn of the specific SNS topic>"
}
],
"Version": "2012-10-17"
},
"PolicyName": "your-job-role-policy",
"Roles": [
{
"Ref": "roleresourceID"
}
]
}
}
最后将角色附加到职位定义:
....other job definition properties
"JobRoleArn": {
"Fn::GetAtt": [
"roleresourceID",
"Arn"
]
}
当然,您可以按照自己喜欢的方式构建和格式化角色和策略,此解释的主要思想是您需要使用工作定义的 JobRoleArn
属性 附加适当的角色。
如何只允许来自特定 AWS Batch 队列的作业(并基于特定的作业描述)发布到特定的 SNS 主题?
我想通过声明附加到作业 IAM 策略:
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": ["<arn of the specific SNS topic"]
"Condition": {"ArnEquals": {"aws:SourceArn": "arn:aws:???"}}
}
但是源 ARN 应该是什么?作业队列的 ARN,作业定义的 ARN?或者也许这应该完全不同地设置?
我在处理在 Fargate 容器中执行的 AWS Batch 作业时有过类似的经历,这些作业在分配角色和权限的范围内遵循与 ECS 相同的原则。
如果您要从容器内执行的代码向特定主题发布消息,那么您应该创建一个具有必要权限的角色,然后在 JobRoleArn
property 中使用其 ARN你的工作定义。
例如(下面的代码可能有一些小错误,但我只是想在这里解释一下这个概念):
角色 cloudformation:
"roleresourceID": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"AWS": "*"
}
}
],
"Version": "2012-10-17"
},
"RoleName": "your-job-role"
}
}
附加到角色的政策:
"policyresourceid": {
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyDocument": {
"Statement": [
{
"Action": "sns:Publish",
"Effect": "Allow",
"Resource": "<arn of the specific SNS topic>"
}
],
"Version": "2012-10-17"
},
"PolicyName": "your-job-role-policy",
"Roles": [
{
"Ref": "roleresourceID"
}
]
}
}
最后将角色附加到职位定义:
....other job definition properties
"JobRoleArn": {
"Fn::GetAtt": [
"roleresourceID",
"Arn"
]
}
当然,您可以按照自己喜欢的方式构建和格式化角色和策略,此解释的主要思想是您需要使用工作定义的 JobRoleArn
属性 附加适当的角色。