导出 Lambda ARN
Export the Lambda ARN
我想导出使用无服务器框架创建的 Lambda ARN,因为我需要在其他 CF 模板中使用此 ARN
我在 serverless.yml 文件中定义了输出和导出。
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
一切正常。
但是,导出包含 lambda 版本 ARN(即 arn:aws:lambda:region:12345:function:servicename:2)。
这会导致问题,因为此 ARN 已被其他 CF 使用,因此无法更新。
"Export MyServiceArn cannot be updated as it is in use by xyz"
有没有办法获取没有版本号的 ARN?
感谢您的帮助。
尝试
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
Value:
Fn::GetAtt: ServiceLambdaFunction.Arn
简而言之:
!GetAtt MyCreatedResource.Arn
例如
Outputs:
FluentBitVerifyRole:
Description: ARN of the verification role
Value: !GetAtt FluentBitVerifyRole.Arn
不,只需在 serverless.yml 中添加 versionFunctions: false
在供应商内部
像这样
name: aws
region: eu-west-1
runtime: nodejs10.x
versionFunctions: false
stage: ${opt:stage, 'dev'}
更新 07-2020
这个问题仍然有效,接受的答案不适用于无服务器 1.74.1。我的用例是将自定义授权方 lambda(作为单独的服务)导出到其他服务。
以下是对我有用的方法:
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
您不需要对值的引用,应仅使用名称导出 arn。
然后在另一个服务中使用导出:
authorizer:
name: MyServiceARN
arn:
Fn::ImportValue: MyServiceARN
添加到此的“名称”最终成为自定义授权方用例所必需的。
这对我有用:
在第一个无服务器堆栈中以唯一的导出名称导出 <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
我想导出使用无服务器框架创建的 Lambda ARN,因为我需要在其他 CF 模板中使用此 ARN
我在 serverless.yml 文件中定义了输出和导出。
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
一切正常。
但是,导出包含 lambda 版本 ARN(即 arn:aws:lambda:region:12345:function:servicename:2)。
这会导致问题,因为此 ARN 已被其他 CF 使用,因此无法更新。
"Export MyServiceArn cannot be updated as it is in use by xyz"
有没有办法获取没有版本号的 ARN?
感谢您的帮助。
尝试
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
Value:
Fn::GetAtt: ServiceLambdaFunction.Arn
简而言之:
!GetAtt MyCreatedResource.Arn
例如
Outputs:
FluentBitVerifyRole:
Description: ARN of the verification role
Value: !GetAtt FluentBitVerifyRole.Arn
不,只需在 serverless.yml 中添加 versionFunctions: false 在供应商内部
像这样
name: aws
region: eu-west-1
runtime: nodejs10.x
versionFunctions: false
stage: ${opt:stage, 'dev'}
更新 07-2020
这个问题仍然有效,接受的答案不适用于无服务器 1.74.1。我的用例是将自定义授权方 lambda(作为单独的服务)导出到其他服务。
以下是对我有用的方法:
resources:
Outputs:
ServiceLambdaFunctionQualifiedArn:
Export:
Name: MyServiceARN
您不需要对值的引用,应仅使用名称导出 arn。
然后在另一个服务中使用导出:
authorizer:
name: MyServiceARN
arn:
Fn::ImportValue: MyServiceARN
添加到此的“名称”最终成为自定义授权方用例所必需的。
这对我有用:
在第一个无服务器堆栈中以唯一的导出名称导出 <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