AWS CDK:迭代密钥

AWS CDK: Iterate over Secret keys

我正在使用 Secret 来存储 Fargate 服务的环境密钥。我想过滤这个密钥,删除其中一些(以“CDK_”开头的密钥)并将所有剩余的 keys/values 发送到容器。

我在想这样的事情:

secrets = aws_secretsmanager.Secret.from_secret_complete_arn(self, "Env",
    secret_complete_arn = …)

task_definition = aws_ecs.FargateTaskDefinition(stack, "MyTaskDef")
task_definition.add_container("MyContainer",
    image = …,
    environment = { 
        key: value 
        for key, value in secrets.secret_value.to_json().items() 
        if key[0:4] != "CDK_"})

但由于 SecretValue 分辨率,它无法正常工作:

AttributeError: 'str' object has no attribute 'items'

print(secrets.secret_value.to_json())
# <unresolved-token>

有没有办法在 CDK 中迭代 Secret 键?

不,没有。 CDK 本身不访问秘密,因此它永远无法访问实际值,并且您不能基于它执行任何操作,包括迭代。

当您在 CDK 中获取秘密的值时,您只是在查看对它的引用或令牌,而不是实际值。

我的建议是重新考虑架构 - 使用您的 CDK_ 密钥创建一个单独的秘密,因为秘密应该在需要知道的基础上使用。任务角色不应访问它不需要的字段。

https://docs.aws.amazon.com/cdk/latest/guide/tokens.html