Cómo crear un documento de política IAM con múltiples declaraciones utilizando CDK Python?
Estoy tratando de escribir un PolicyDocument IAM con múltiples declaraciones usando Python en CDK, pero no pude encontrar ejemplos en ningún lugar.
Esto es lo que tengo en YAML y estoy tratando de escribir en CDK usando Python.
Lambda:
Type: AWS::IAM::Role
Properties:
RoleName:
Fn::Sub: LambdaRole
Policies:
- PolicyName:
Fn::Sub: LambdaPolicy
PolicyDocument:
Version: 2012-10-17
Statement:
- Sid: ADPermissions
Effect: Allow
Action:
- ssm:SendCommand
- ec2:DescribeInstances
- ds:DescribeDirectories
- ssm:GetParameter
- ssm:PutParameter
- ssm:StartAutomationExecution
- dynamodb:Scan
- dynamodb:Query
- sts:AssumeRole
Resource: "*"
- Sid: SQS
Effect: Allow
Action:
- sqs:SendMessage
Resource: "*"
- Sid: CloudWatch
Effect: Allow
Action:
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
Resource: "*"
Escribí lo siguiente basándome en el YAML, pero me está dando errores. Cualquier ayuda para esto es muy apreciada.
RolePolicy.add_to_policy(
iam.PolicyDocument(
statements = [
iam.PolicyStatement(
effect = iam.Effect.ALLOW,
actions = [
'ssm:SendCommand',
'ec2:DescribeInstances',
'ds:DescribeDirectories',
'ssm:GetParameter',
'ssm:PutParameter',
'ssm:StartAutomationExecution',
'sts:AssumeRole'
],
resources = ['*']
)
]
),
iam.PolicyDocument(
statements = [
iam.PolicyStatement(
effect = iam.Effect.ALLOW,
actions = [
'sqs:SendMessage'
],
resources = ['*']
)
]
),
iam.PolicyDocument(
statements = [
iam.PolicyStatement(
effect = iam.Effect.ALLOW,
actions = [
'logs:CreateLogGroup',
'logs:CreateLogStream',
'logs:PutLogEvents'
],
resources = ['*']
)
]
)
)
davy.ai
El método
add_to_policy
solo acepta unPolicyDocument
. Para crear un soloPolicyDocument
con múltiples declaraciones, utiliza el siguiente código:Este código crea un solo
PolicyDocument
con tres objetosPolicyStatement
, cada uno definiendo un conjunto diferente de acciones y recursos.