Amazon cloudformation 将Lambda Arn放入资源:类型:AWS::Lambda::Permission
我的无服务器yml文件中包含以下内容:Amazon cloudformation 将Lambda Arn放入资源:类型:AWS::Lambda::Permission,amazon-cloudformation,serverless-framework,Amazon Cloudformation,Serverless Framework,我的无服务器yml文件中包含以下内容: lambdaQueueFirstInvokePermission: Type: AWS::Lambda::Permission Properties: FunctionName: ServiceLambdaFunctionQualifiedArn Action: ‘lambda:InvokeFunction’ Principal: sqs.amazonaws.com 在输出部分,我有以下内容: Outputs: Ser
lambdaQueueFirstInvokePermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: ServiceLambdaFunctionQualifiedArn
Action: ‘lambda:InvokeFunction’
Principal: sqs.amazonaws.com
在输出部分,我有以下内容:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Value:
‘Fn::GetAtt’: [ lambdaQueueFirst, Arn ]
这将返回一条消息:
模板错误:Fn::GetAtt的实例引用了未定义的资源lambdaQueueFirst
我是否遗漏了什么?如果是,是什么?因为这是非常少的帮助或例子方面…
另外,是否有更好的方法将lambda arn引入权限代码?如果是,是什么?您可以这样做:
resources:
Resources:
LoggingLambdaPermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: { "Fn::GetAtt": ["LoghandlerLambdaFunction", "Arn" ] }
Action: lambda:InvokeFunction
Principal: { "Fn::Join" : ["", ["logs.", { "Ref" : "AWS::Region"}, ".amazonaws.com" ] ] }
参考:
您可以使用环境变量构建ARN值。在您的情况下,您可以在provider部分定义一个变量,如下所示。您可能需要根据您的应用程序进行一些修改
service: serverless App2
provider:
name: aws
runtime: python3.6
region: ap-southeast-2
stage: dev
environment:
AWS_ACCOUNT: 1234567890 # use your own AWS ACCOUNT number here
# define the ARN of the function that you want to invoke
FUNCTION_ARN: "arn:aws:lambda:${self:provider.region}:${self:provider.environment.AWS_ACCOUNT}:function:${self:service}-${self:provider.stage}-lambdaQueueFirst"
Outputs:
ServiceLambdaFunctionQualifiedArn:
Value: "${self:provider.environment.FUNCTION_ARN}"
请参阅和示例。显示您的
类型:AWS::Serverless::Function
资源您的lambdaQueueFirst
资源在哪里?您好。谢谢你们两位的回复。该函数位于serverless.yml文件的“function”部分下。它不在参考资料部分。还有可能吗?这对我很有用。我可以使用{“Fn::GetAtt:[“LoghandlerLambdaFunction”,“Arn”]}在参考资料
部分中获取lambda函数的Arn