Secrets Manager我在 Account-1 中有一个秘密键值对us-east-1。此秘密使用客户管理的 KMS 密钥进行加密 - 我们称之为KMS-Account-1。所有这些都是通过控制台创建的。
现在我们转向CDK. 我们已经将cdk.pipelines.CodePipeline其部署Lambda到多个阶段/环境 - 所以从第一个到{ Account-2, us-east-1 }然后到{ Account-3, eu-west-1 }等等。这已经完成了。
us-east-1 SecretsManager上述所有阶段/环境中的 lambda 代码现在都需要更改为通过客户端获取Account-1 中存在的秘密键值对secretsmanager。该代码可能应如下所示 ( python):
client = boto3.session.Session().client(
service_name = 'secretsmanager',
region_name = 'us-east-1'
)
resp = client.get_secret_value(
SecretId='arn:aws:secretsmanager:us-east-1:<ACCOUNT-1>:secret:name/of/the/secret'
)
secret = json.loads(resp['SecretString'])
Run Code Online (Sandbox Code Playgroud)
各个帐户和区域(即环境)中的所有 lambda 表达式都将具有与上述完全相同的代码,因为需要从us-east-1.
cdk代码以促进这一点?代码管道中的代码部署如何获得导入此自定义kms密钥的权限,并SecretManager' secret通过 cdk 管道创建的 lambda 为跨帐户访问应用正确的权限?有人可以指点一下吗?
aws-lambda amazon-kms aws-codepipeline aws-secrets-manager aws-cdk