Python 向SQS队列添加权限-PrincipalId无效
我正在为特定的内联用户创建一个SQS队列并向该队列添加权限,但是Python 向SQS队列添加权限-PrincipalId无效,python,boto3,amazon-sqs,amazon-iam,Python,Boto3,Amazon Sqs,Amazon Iam,我正在为特定的内联用户创建一个SQS队列并向该队列添加权限,但是add_permission调用以意外的方式失败 import boto3 queue_name = 'test-queue' sqs_client = boto3.client('sqs') response = sqs_client.create_queue(QueueName=queue_name) queue = boto3.resource('sqs').Queue(response.get('QueueUrl') q
add_permission
调用以意外的方式失败
import boto3
queue_name = 'test-queue'
sqs_client = boto3.client('sqs')
response = sqs_client.create_queue(QueueName=queue_name)
queue = boto3.resource('sqs').Queue(response.get('QueueUrl')
queue.add_permission(
Label='TestReceivePermissions',
AWSAccountIds=['arn:aws:iam::<account_id>:user/test_user'],
Actions=['ReceiveMessage']
)
目前这是可行的,但我仍然不明白为什么另一种方法不起作用。
AWSAccountIds
对于一个需要ARN数组作为参数的键来说似乎是个奇怪的名称。我同意。我认为典型的用例是允许其他AWS帐户访问资源。然而,文件说,委托人也可以是用户。正如我所提到的,我可以通过AWS控制台将ARN添加到策略中。你找到这个了吗?我自己刚碰到的
botocore.exceptions.ClientError: An error occurred (InvalidParameterValue) when calling the AddPermission operation: Value [arn:aws:iam::<account_id>:user/test_user] for parameter PrincipalId is invalid. Reason: Unable to verify.
import json, boto3
sqs = boto3.resource('sqs')
iam = boto3.resource('iam')
queue_name = 'test-queue'
USER_NAME = 'test_user'
queue = sqs.create_queue(QueueName=queue_name)
policy = iam.create_policy(
PolicyName='{}-ReceiveAccess'.format(queue_name),
PolicyDocument=json.dumps({
'Version': '2012-10-17',
'Statement': [
{
'Effect': 'Allow',
'Action': [
'sqs:ReceiveMessage*'
],
'Resource': [queue.attributes['QueueArn']]
}
]
})
)
policy.attach_user(UserName=USER_NAME)