【发布时间】:2017-11-17 02:26:02
【问题描述】:
我有一个 Cloudformation 堆栈,例如,
---
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
MyFavoriteActivity:
Type: "AWS::StepFunctions::Activity"
Properties:
Name: "my-special-name"
ActivityAccessRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
AWS:
Fn::Sub: "arn:aws:iam::${AWS::AccountId}:user/my-special-user"
Action:
- sts:AssumeRole
Policies:
- PolicyName: "Activity_Role_Policy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- states:GetActivityTask
Resource: { Ref: "MyFavoriteActivity" }
使用 Boto3,我尝试使用我的 ActivityAccessRole 中的键调用 get_activity_task,
sfn_client = boto3.client('stepfunctions', **assumed_role_keys)
task = sfn_client.get_activity_task(
activityArn='arn:aws:states:us-west-2:012345678910:activity:My-favorite-activity',
workerName='my-worker'
)
但我得到一个错误,
An error occurred (AccessDeniedException) when calling the GetActivityTask operation:
User: arn:aws:sts::012345678910:assumed-role/some-prefix-ActivityAccessRole-some-hash/AssumeRoleSession1
is not authorized to perform: states:GetActivityTask on resource: arn:aws:states::012345678910:role/arn:aws:states:us-west-2:012345678910:activity:My-favorite-activity
我看到的问题是我从未创建过arn:aws:states::012345678910:role/arn:aws:states:us-west-2:012345678910:activity:My-favorite-activity(注意前缀)!
如何修复我的 CF 模板以提供适当的权限?
【问题讨论】:
-
您究竟是如何配置“来自我的
ActivityAccessRole的密钥”的?这些钥匙是从哪里来的?它们不在堆栈中。 -
@kichik 类似于this。我不认为这是问题所在,因为如果您查看错误,它表明我正在使用假定的角色
User: arn:...:AssumedRoleSession1。但我很可能是错的。 -
使用
Resource: "*"是否有效? -
我是这样做的:在您的角色“AssumeRolePolicyDocument”中,信任帐户而不是用户(即:信任根)。然后允许用户承担这个角色,使用附加到用户的策略,或者更好的是附加到包含该用户的组。
-
@kichik 有点像。一段时间后引发连接超时,但我也没有任何任务要完成。所以我实际上希望
标签: amazon-web-services amazon-cloudformation amazon-iam aws-step-functions