首页 > 解决方案 > (cdk + boto3):在 CDK 应用程序中使用 boto3

问题描述

我使用 CDK 针对不同的环境运行ENV=<enviornment name> cdk synth --profile <PROFILE_NAME> --all- 现在我想在我的 CDK 应用程序中创建 SSM 秘密参数。这应该只在脚手架期间发生,但需要 boto3,因为没有 CloudFormation 等效项。如何将 CDK 身份验证与 boto3 一起重用?我在 Python 中使用 CDK 和 boto3 进行开发,并使用 MFA。有任何想法吗?

#1 试用 - 使用缓存的凭据

不工作,因为 CDK 没有缓存凭据:(

我遇到了一些使用 boto3 检索缓存凭据的方法。我仍然需要与 CDK 一起使用的配置文件,因为没有我收到错误消息botocore.exceptions.NoCredentialsError: Unable to locate credentials。有人知道如何获取代码中使用的 AWS CDK 配置文件吗?也许是解决方案的第一步。

# By default the cache path is ~/.aws/boto/cache
cli_cache = os.path.join(os.path.expanduser("~"), ".aws/cli/cache")

# Construct botocore session with cache
session = botocore.session.get_session()
session.get_component("credential_provider").get_provider(
    "assume-role"
).cache = credentials.JSONFileCache(cli_cache)

# Create boto3 client from session
return boto3.Session(botocore_session=session)

标签: boto3aws-cdk

解决方案


我建议查看自定义资源,这是一种在 CDK 内调用 AWS api(甚至执行任何代码)的方法。


推荐阅读