AWS CDK:找不到使用子流程创建的 IAM 角色

DigVen

我使用 iam.Role 创建了一个角色,然后尝试使用子流程库找到该角色。我看到该角色已成功创建,但无法在使用 subprocess 执行的命令的输出中找到该角色。请在下面找到代码。

任何人都可以指出问题所在,并根据 CDK 中的角色名称/Id 建议获取任何角色的 Arn 的最佳方法

类 CdkTestStack(堆栈):

def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
    super().__init__(scope, construct_id, **kwargs)

    #Create role        
    role = iam.Role(self, role_name='cdk-test-role', 
              id='cdk-test-role',
              assumed_by=iam.CompositePrincipal(iam.ServicePrincipal('lambda.amazonaws.com')),
              max_session_duration=aws_cdk.Duration.seconds(10000),
              path='/test-cdk/')

    print('Created role with name: '+str(role.role_name))

    #Get list of all policies
    roles_output=subprocess.run(['aws', 'iam', 'list-roles', '--path-prefix', '/test-cdk/'], capture_output=True, text=True)
    roles = str(roles_output.stdout)
    roles_cli = json.loads(roles)

    for roles_cli_key in roles_cli:
        roles_arr = roles_cli[roles_cli_key]
        
        for rol in roles_arr:
            rol_nam = rol['RoleName']
            
            if(rol_nam == 'cdk-test-role'):
                role_id = rol['RoleId']
                role_arn = rol['Arn']
                imported_role = iam.Role.from_role_arn(id=role_id,scope=self,role_arn=role_arn)
                
                print('Found imported role: '+str(imported_role.role_name))
格什皮奇卡

CDK 生成 CloudFormation 模板。因此,当 CLI 运行您的代码时,结果是一个模板。仅当此模板上传到 AWS 并执行(执行此操作)时,才会创建您的角色cdk deploy

此外,从您的 CDK 代码进行网络调用(尤其是 SDK 调用)也不是一个好主意。最佳实践是使您的 CDK 代码具有确定性——即每次都合成到同一个模板,而不依赖于网络。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章