我正在尝试使用 Boto3 创建一个仅附加托管策略的新实例角色。
我有以下几点:
策略名称:my_instance_policy
策略 ARN:arn:aws:iam::123456789012:policy/my_test_policy
我想创建名为"my_instance_role"的角色,仅附加上述策略。
Boto3客户端具有如下create_role()
功能:
import boto3
client = boto3.client('iam')
response = client.create_role(
Path='string',
RoleName='string',
AssumeRolePolicyDocument='string',
Description='string'
)
在这里,我没有看到使用策略 ARN 或名称的选项。我的理解是AssumeRolePolicyDocument
变量需要将 JSON 格式的策略文档转换为文本。
我想要的方式吗?
您必须创建角色(如上所述(,然后将托管策略单独附加到角色,如下所示:
response = client.attach_role_policy(
RoleName='MyRole', PolicyArn='<arn of managed policy>')
在使用 boto3 创建 IAM 角色时,我有一个类似的问题,关于如何提供AssumeRolePolicyDocument
。
我使用了以下代码...
assume_role_policy_document = json.dumps({
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "greengrass.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
})
create_role_response = self._iam.create_role(
RoleName = "my-role-name",
AssumeRolePolicyDocument = assume_role_policy_document
)
请注意,AssumeRolePolicyDocument
是关于定义信任关系,而不是您正在创建的角色的实际权限。