Python 如何使用内在函数!Aws cdk中的子方法?
我想在我的cdk应用程序中使用下面的资源,我想在cdk中使用Python:Python 如何使用内在函数!Aws cdk中的子方法?,python,amazon-cloudformation,aws-cdk,Python,Amazon Cloudformation,Aws Cdk,我想在我的cdk应用程序中使用下面的资源,我想在cdk中使用Python: 'arn:aws:s3:::${LoggingBucket}/AWSLogs/${AWSAccoutID}/*' 因此,我需要替换LoggingBucket和AWSAccountID的值 以下是我尝试过的: bucket = s3.Bucket(self, "my-bucket", bucket_name = 'my-bucket') core.Fn.sub('arn:aws:s3:::${Log
'arn:aws:s3:::${LoggingBucket}/AWSLogs/${AWSAccoutID}/*'
因此,我需要替换LoggingBucket
和AWSAccountID
的值
以下是我尝试过的:
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])
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)
但是我在core.Fn.sub的行中得到了这个错误:
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])
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)
然后我也尝试了这个:
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])
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合成器
我仍然得到与上面相同的错误
问题:
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])
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中云信息的子功能。让我知道我做错了什么
谢谢。由于您在使用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)
由于在使用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(或其他编程语言),因此不需要使用Cloudformation提供的内在函数 我建议采用一种更优雅、更简单的方式来设置arn的格式:
arn= f'arn:aws:s3:::{bucket.bucket_name}/AWSLogs/{core.Environment.account}/*'
由于您使用的是Python(或其他编程语言),因此不需要使用Cloudformation提供的内在函数 我建议采用一种更优雅、更简单的方式来设置arn的格式:
arn= f'arn:aws:s3:::{bucket.bucket_name}/AWSLogs/{core.Environment.account}/*'