Boto3 Layer for Python Lambda functions

AWS

Create the layer in Lambda Lambdaレイヤーの作成

CloudShellで実行しました。

$ mkdir python
$ pip install boto3 -t python/
...
Successfully installed boto3-1.38.40 ...

$ zip -r FILE_NAME.zip python/
$ aws lambda publish-layer-version --layer-name LAYER_NAME \
                                   --zip-file fileb://FILE_NAME.zip \
                                   --compatible-runtimes python3.13
{
    "Content": {
        "Location": ...,
        "CodeSha256": ...,
        "CodeSize": ...
    },
    "LayerArn": "arn:aws:lambda:REGION:ACCOUNT_ID:layer:LAYER_NAME",
    "LayerVersionArn": "arn:aws:lambda:REGIONACCOUNT_ID:layer:LAYER_NAME:1",
    "Description": ...,
    "CreatedDate": ...,
    "Version": 1,
    "CompatibleRuntimes": [
        "python3.13"
    ]
}

SAM Template and Deploying Lambda function SAMテンプレートとLambda関数のデプロイ

レイヤーのBoto3をimportできているか確認するためのLambda関数をSAMで作成、デプロイします。

samconfig.toml

version = 0.1

[default.global.parameters]
region = REGION
stack_name = STACK_NAME
s3_bucket = BUCKET_NAME
s3_prefix = PREFIX

template.yaml
“Layers”でレイヤーのARNをリスト形式で指定します(指定するレイヤーが1つでもリスト形式)。

Resources:
  Lambda:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: LAMBDA_FUNCTION_NAME
      Handler: index.lambda_handler
      Runtime: python3.13
      CodeUri: .
      Layers:
        - !Sub arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:layer:LAYER_NAME:VERSION
      Role: !Sub arn:aws:iam::${AWS::AccountId}:role/ROLE_NAME

  Logs:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: !Sub /aws/lambda/${Lambda}

index.py

import boto3

def lambda_handler(event, context):
    print(f"boto3.__version__={boto3.__version__}")
$ sam deploy

Result 実行結果

レイヤーを使用しない場合

boto3.__version__=1.35.92

レイヤーを使用する場合

boto3.__version__=1.38.40

Reference 参考

レイヤーによる Lambda 依存関係の管理 - AWS Lambda
このセクションでは、AWS レイヤーを使用してアプリケーションコードを依存関係から分離する方法について説明します。
Python Lambda 関数にレイヤーを使用する - AWS Lambda
Python Lambda レイヤーをパッケージ化して作成する方法について説明します。
Lambda でのレイヤーの作成と削除 - AWS Lambda
Lambda レイヤーの正しい作成方法および削除方法を学びましょう。
関数へのレイヤーの追加 - AWS Lambda
Lambda レイヤーを関数に追加する方法を学びましょう。
https://docs.aws.amazon.com/ja_jp/pythonsdk/
AWS::Serverless::Function - AWS Serverless Application Model
このセクションには、 AWS SAM リソースとプロパティタイプ に関する詳細が含まれていますAWS::Serverless::Function。
擬似パラメータを使用して AWS 値を取得する - AWS CloudFormation
CloudFormation によってあらかじめ定義された、利用可能な擬似パラメータの詳細が一覧表示されます。 擬似パラメータは、AWS アカウント、リージョン、およびその他のコンテキストデータに関するコンテキスト情報を提供する組み込み変数...
タイトルとURLをコピーしました