【问题标题】:Latest Lambda Layer ARN最新的 Lambda 层 ARN
【发布时间】:2019-04-18 15:29:54
【问题描述】:

我有一个不断更新的 lambda 层。这个 lambda 层有多个版本。如何使用 aws cli 找到最新版本的 lambda 层 ARN?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-cli aws-lambda-layers


    【解决方案1】:

    我可以使用下面列出的命令来做到这一点 -

    aws lambda list-layer-versions --layer-name <layer name> --region us-east-1 --query 'LayerVersions[0].LayerVersionArn'
    

    【讨论】:

    • 我不确定第一个位置是否总是最新的,所以我最终在查询中排序:aws lambda list-layer-versions --layer-name &lt;layer_name&gt; --region us-east-1 --query 'max_by(LayerVersions, &amp;Version).LayerVersionArn'
    • 如果您查看完整列表,您会发现第一个总是最新的。还添加 --output text 标志,使其返回为直接文本而不是由引号包围的文本
    • --list-layer-versions 命令不支持查询
    【解决方案2】:

    很遗憾,目前不可能(我遇到了同样的问题)。

    您可以将最新的 ARN 保存在自己的位置(例如 DynamoDB),并在发布层的新版本时对其进行更新。

    【讨论】:

    • 谢谢@Ronyis。我能够找到一种方法 - 将其发布为答案
    【解决方案3】:

    您可以创建自定义宏来获取最新的 lambda 层版本并将其用作参考。

    以下函数从 Lambda 层堆栈获取最新版本:

    import json
    import boto3
    
    
    def latest_lambdalayer(event, context):
        
        fragment = get_latestversion(event['fragment'])
        return {
          'requestId': event['requestId'],
          'status': 'success',
          'fragment': fragment
        }
    
    def get_latestversion(fragment):
        cloudformation = boto3.resource('cloudformation')
        stack = cloudformation.Stack('ticketapp-layer-dependencies')
        for o in stack.outputs: 
            if o['OutputKey']=='TicketAppLambdaDependency':
                return o['OutputValue']
        #return "arn:aws:lambda:eu-central-1:899885580749:layer:ticketapp-dependencies-layer:16"
    

    您在定义 Lambda 层时使用它——这里使用相同的全局模板:

    Globals:
      Function:
        Layers:
          - !Transform { "Name" : "LatestLambdaLayer"}
        Runtime: nodejs12.x
        MemorySize: 128
        Timeout: 101
    

    【讨论】:

      猜你喜欢
      • 2019-05-21
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 2020-05-14
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多