boto3 - (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)
解决方案
我建议查看自定义资源,这是一种在 CDK 内调用 AWS api(甚至执行任何代码)的方法。
推荐阅读
- python-3.x - 有没有办法遍历随包安装的模块?
- c# - 是否可以在运行时覆盖 Environment.GetCommandLineArgs()?
- php - 遍历从php中的api获取的数组值
- javascript - 通过 JS 添加类或不通过 PHP 在某些用户 IP 上输出 html
- arrays - 声明数组时指定的大小是否比要求的大?
- java - 更改新项目的 Maven 默认 Java 合规性级别
- android - 谷歌地方 API 密钥不起作用
- java - 如果两个对象访问同一个实例变量会发生什么?
- apexcharts - ApexCharts - 启用动画时,不打印完整图表
- postgresql - 上传图片到谷歌云平台