首先,需要引入 SecretValue
、 Secret
、 CfnTaskDefinition
部分类,并使用 aws_secret_manager.Secret
中的 from_secret_arn
方法从 ARN 获取 Secret 对象。
接下来可以使用 secret.value_from_json
方法从 Secret 对象中获取 JSON 字符串。再使用 json.loads
解析 JSON 字符串,并以字典形式返回密钥值对。最后,使用字典键获取所需的值。
以下是示例代码:
from aws_cdk import (
aws_ecs as ecs,
aws_secretsmanager as sm,
core
)
import json
app = core.App()
# 定义 ECS 集群和任务等
cluster = ecs.Cluster(app, 'Cluster')
task_definition = ecs.FargateTaskDefinition(
app, 'TaskDefinition', memory_limit_mib=512, cpu=256)
# 使用 Secrets Manager 中的密钥
secret_arn = 'arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret-xxxyyy'
# 获取 Secret 对象
secret = sm.Secret.from_secret_arn(
app, 'Secret', secret_arn)
# 获取密钥值对
secret_dict = json.loads(secret.secret_value_from_json('SecretString'))
# 使用密钥键获取值
username = secret_dict['username']
password = secret_dict['password']
# 添加容器定义
container = task_definition.add_container(
'Container', image=ecs.ContainerImage.from_registry('nginx'), secrets={
'username': ecs.Secret.from_secrets_manager(secret, 'username'),
'password': ecs.Secret.from_secrets_manager(secret, 'password')
})
# 其他 ECS 和 CDK 代码
app.synth()
上一篇:AWSCDK-Role.addManagedPolicydoesnotworkforimportedroles
下一篇:AWSCDK-StepFunction-CallAwsService中BatchGetBuilds参数的正确格式是什么?