Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用内在函数!Aws cdk中的子方法?_Python_Amazon Cloudformation_Aws Cdk - Fatal编程技术网

Python 如何使用内在函数!Aws cdk中的子方法?

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

我想在我的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:::${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}/*'