stack_name = "test-stack"
bucket = aws.s3.Bucket(
f"{stack_name}",
acl="private",
)
firehose_s3_policy = aws.iam.Policy(
f"{stack_name}-firehose-s3-access-policy",
policy=json.dumps(
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:*",
],
"Resource": [
bucket.arn,
]
}
]
}
))
我得到的错误:
TypeError: Object of type Output is not JSON serializable
如果我做bucket.arn
一个字符串 (str(bucket.arn)) 我得到 \"Resource\": [\"<pulumi.output.Output object at 0x7f404d2ebed0>\"]
我尝试使用apply,但它也不起作用。怎么解决?
最佳答案
您需要使用apply
将字符串输出转换为JSON输出:
def public_read_policy_for_bucket(arn):
return json.dumps({
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:*"
],
"Resource": [
arn,
]
}]
})
firehose_s3_policy = aws.iam.Policy(
f"{stack_name}-firehose-s3-access-policy",
policy=bucket.arn.apply(public_read_policy_for_bucket))
查看full example .
关于python - Output 类型的对象不可 JSON 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68274170/