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_
密钥创建一个单独的秘密,因为秘密应该在需要知道的基础上使用。任务角色不应访问它不需要的字段。
我正在使用 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_
密钥创建一个单独的秘密,因为秘密应该在需要知道的基础上使用。任务角色不应访问它不需要的字段。