Amazon s3 aws cloudformation无法导入导出变量的值
我正在尝试使用cloudformation yaml文件在aws云中创建堆栈 下面是我的第一个堆栈文件的一个片段。在输出部分,我使用Lambda函数Arn的值创建导出变量Amazon s3 aws cloudformation无法导入导出变量的值,amazon-s3,aws-lambda,amazon-cloudformation,Amazon S3,Aws Lambda,Amazon Cloudformation,我正在尝试使用cloudformation yaml文件在aws云中创建堆栈 下面是我的第一个堆栈文件的一个片段。在输出部分,我使用Lambda函数Arn的值创建导出变量 Resources: FileTriggerFunction: Type: 'AWS::Lambda::Function' Properties: FunctionName: 'Fn::Join': - '-' - - 'Fn::Impor
Resources:
FileTriggerFunction:
Type: 'AWS::Lambda::Function'
Properties:
FunctionName:
'Fn::Join':
- '-'
- - 'Fn::ImportValue': !Sub '${EnvironmentStackName}-EnvironmentId'
- Arc
- FileTrigger
Description: ARC File Trigger for offline files
Runtime: dotnetcore2.1
MemorySize: 256
Handler: >- Offline.FileTrigger::Offline.FileTrigger.TriggerFileHandler::ReadFileFromS3
Role: !GetAtt FileTriggerLambdaRole.Arn
VpcConfig:
SecurityGroupIds:
- !Ref FileTriggerSecurityGroup
SubnetIds:
'Fn::Split':
- ','
- 'Fn::ImportValue': !Sub '${EnvironmentStackName}-PrivateSubnets'
Timeout: 300
Code: Offline.FileTrigger.zip
Outputs:
FileTriggerLambdaFunction:
Description: FileTrigger Lambda Function Arn
Value: !GetAtt FileTriggerFunction.Arn
Export:
Name: !Sub ${EnvironmentStackName}-FileTriggerFunctionArn
堆栈已正确创建,并且我能够在输出中看到导出变量
现在在下一个cloudformation中,我尝试使用ImportValue获取值,类似这样的东西
OfflineBucket:
Type: 'AWS::S3::Bucket'
Properties:
BucketName:
'Fn::Join':
- .
- - offline-files
- !Ref LowerBusinessUnit
- 'Fn::Sub': '${LowerEnvStackName}'
NotificationConfiguration:
LambdaConfigurations:
- Event: 's3:ObjectCreated:*'
- Function: !ImportValue
'Fn::Sub': '${EnvironmentStackName}-FileTriggerFunctionArn'
在创建第二个堆栈时,我遇到了以下错误
CREATE_FAILED AWS::S3::Bucket OfflineBucket Property Function cannot be empty.
看起来ImportValue无法从导出的变量中读取值。
我已验证EnvironmentStackName是否正确。我也尝试过直接输入变量名,但仍然是相同的错误
OfflineBucket:
Type: 'AWS::S3::Bucket'
Properties:
BucketName:
'Fn::Join':
- .
- - offline-files
- !Ref LowerBusinessUnit
- 'Fn::Sub': '${LowerEnvStackName}'
NotificationConfiguration:
LambdaConfigurations:
- Event: 's3:ObjectCreated:*'
- Function: !ImportValue ocsdebug-kd-environment-FileTriggerFunctionArn
有人能告诉我我做错了什么吗?根据功能:
重要
你不能使用缩写形式的!ImportValue,当它包含!Sub.以下示例适用于AWS CloudFormation,但不适用于YAML:
!ImportValue
!Sub "${NetworkStack}-SubnetID"
相反,必须使用完整的函数名,例如:
Fn::ImportValue:
!Sub "${NetworkStack}-SubnetID"
问题在于NotificationConfiguration。AWS CF在创建铲斗时不支持此操作。 因此,现在我只创建bucket而不创建NotificationConfiguration,稍后使用aws cli添加通知配置