我想导出使用无服务器框架创建的Lambda ARN,因为我需要在其他CF模板中使用此ARN
我在我的serverless.yml文件中定义了Outputs and Export。
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
一切正常。
但是,导出文件包含Lambda版本ARN(即arn:aws:lambda:region:12345:function:servicename:2)。
这引起了问题,因为该ARN被其他CF使用,因此无法更新。
“导出MyServiceArn不能更新,因为xyz正在使用它”
有没有没有版本号的ARN的方法吗?
感谢您的帮助。
答案 0 :(得分:4)
尝试
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
Value:
Fn::GetAtt: ServiceLambdaFunction.Arn
答案 1 :(得分:1)
简而言之:
!GetAtt MyCreatedResource.Arn
例如
Outputs:
FluentBitVerifyRole:
Description: ARN of the verification role
Value: !GetAtt FluentBitVerifyRole.Arn
答案 2 :(得分:1)
更新07-2020
此问题仍然有效,对于无服务器1.74.1,可接受的答案对我不起作用。我的用例是将自定义授权者lambda(作为单独的服务)导出到其他服务。
这对我有用:
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
您不需要引用值,应仅使用名称导出arn。
然后在其他服务中使用“导出”:
authorizer:
name: MyServiceARN
arn:
Fn::ImportValue: MyServiceARN
自定义授权者用例最终需要在此名称上添加“名称”。
答案 3 :(得分:0)
nah,只需添加versionFunctions:在serverless.yml中为false 在提供者内部
像这样
name: aws
region: eu-west-1
runtime: nodejs10.x
versionFunctions: false
stage: ${opt:stage, 'dev'}
答案 4 :(得分:0)
这对我有用:
使用唯一的导出名称 <stack>-<stage>-TransformDataLambdaArn
在第一个无服务器堆栈中导出:
service: first-service
provider:
name: aws
runtime: nodejs12.x
region: eu-west-1
stage: ${opt:stage, 'dev'}
functions:
myLambda:
handler: src/handlers/myLambda.handle
resources:
Outputs:
MyLambdaFunctionArn:
Description: 'ARN will be imported by other stacks'
Value: !GetAtt MyLambdaFunction.Arn
Export:
Name: ${self:service}-${self:provider.stage}-MyLambdaArn
并以相同的阶段导入第二个堆栈,如下所示:
Fn::ImportValue: first-service-${self:custom.stage}-MyLambdaArn