gpt4 book ai didi

python - 如何在 Aws cdk 中使用内部函数 !sub 方法?

转载 作者:行者123 更新时间:2023-12-05 01:10:07 26 4
gpt4 key购买 nike

我想将下面的资源用于我的 cdk 应用程序,我使用 Python 作为 CDK:

'arn:aws:s3:::${LoggingBucket}/AWSLogs/${AWSAccoutID}/*'

因此我需要替换 LoggingBucketAWSAccountID 的值。

这是我尝试过的:

bucket = s3.Bucket(self, "my-bucket", bucket_name = 'my-bucket')

core.Fn.sub('arn:aws:s3:::${LoggingBucket}/AWSLogs/${AWSAccoutID}/*',[bucket.bucket_name, core.Environment.account])

但是我在 core.Fn.sub 行中收到此错误:

AttributeError: type object 'property' has no attribute '__jsii_type__'
Subprocess exited with error 1

然后我也尝试了这个:

mappings = {
'LoggingBucket': bucket.bucket_name,
'AWSAccountID': core.Environment.account
}

core.Fn.sub('arn:aws:s3:::${LoggingBucket}/AWSLogs/${AWSAccoutID}/*',mappings)

$ cdk synth

我仍然遇到与上面相同的错误。

问题:

请给我一个如何在CDK中使用cloudformation中的!sub函数的解决方案。让我知道我做错了什么。

谢谢。

最佳答案

由于您在使用 AWS CDK 创建基础设施时使用的是常规 Python,因此您可以使用 python 的内置“格式”方法:

'arn:aws:s3:::{}/AWSLogs/{}/*'.format(bucket.bucket_name, core.Environment.account)

或者使用旧的Python字符串格式化方式

'arn:aws:s3:::%s/AWSLogs/%s/*' % (bucket.bucket_name, core.Environment.account)

关于python - 如何在 Aws cdk 中使用内部函数 !sub 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64480047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com