3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

身の回りの困りごとを楽しく解決! by Works Human IntelligenceAdvent Calendar 2023

Day 14

AWS CloudShellでlambaのLayer定義を一括でs3にエクスポートする方法

Posted at

AWS CloudShellでlambaの定義と関数を一括でs3にエクスポートする方法 の続きでして、、、

Lambda関数で利用しているLayerのコードをAWS管理コンソールでペチペチクリックの繰り返しが42歳にはキツイ(´Д`;)

自分の端末にAWS Cliをインストールするのが困難な環境のため、
CloudShellでS3に一括エクスポートを行います。

利用手順

  1. export_lambda_layer_to_s3.shの保存先バケット名をテキストエディタで編集する
    • Windowsでファイル編集した後は、忘れずにUTF-8 + 改行コードはLFにして保存してください。
  2. AWSマネージドコンソールにログインする
  3. 保存用のS3バケットを作成する(マネージドコンソールで操作)
  4. export_lambda_layer_to_s3.shをS3バケットにアップロードする(マネージドコンソールで操作)
  5. CloudShellを起動する(マネージドコンソールで操作)
  6. 以下のコマンドでS3からexport_lambda_layer_to_s3.shを取得する(CloudShellで操作)
    • aws s3 cp s3://[Your-S3-Bucket-Name]/export_lambda_layer_to_s3.sh .
  7. 以下のコマンドでexport_lambda_layer_to_s3.shに対するファイル実行権限設定を行う(CloudShellで操作)
    • chmod 777 export_lambda_layer_to_s3.sh
    • 実行権限はお使いの状況に合わせて適宜変更してください。
  8. 以下のコマンドでexport_lambda_layer_to_s3.shを実行する。(CloudShellで操作)
    • ./export_lambda_layer_to_s3.sh

S3バケット構成例

バケット名
  > lambda-layer

スクリプトコード例

  • ファイル名:export_lambda_layer_to_s3.sh
#!/bin/bash

# S3バケット名とフォルダ名を設定
S3_BUCKET="保存したいS3バケット名を指定してください"
S3_FOLDER="保存したいS3バケットのフォルダ名を指定してください" # ここにフォルダ名を指定

# 指定されたリージョン内のすべてのLambda Layerのリストを取得
lambda_layers=$(aws lambda list-layers --query 'Layers[].LayerName' --output text)

# 各Lambda LayerをエクスポートしてS3にアップロード
for LAMBDA_LAYER_NAME in $lambda_layers; do
    # 最新のLayerバージョンを取得
    latest_version=$(aws lambda list-layer-versions --layer-name $LAMBDA_LAYER_NAME --query 'LayerVersions[0].Version' --output text)

    # Lambda LayerのコードのURLを取得
    aws lambda get-layer-version --layer-name $LAMBDA_LAYER_NAME --version-number $latest_version --query 'Content.Location' --output text > layer_code_url.txt

    # Lambda Layerコードのダウンロード
    wget -O layer_code.zip -i layer_code_url.txt

    # S3バケット内の指定されたフォルダにLambda LayerのZIPファイルをアップロード
    aws s3 cp layer_code.zip s3://$S3_BUCKET/$S3_FOLDER/$LAMBDA_LAYER_NAME/$LAMBDA_LAYER_NAME.zip

    # 一時ファイルの削除
    rm layer_code_url.txt layer_code.zip
done
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?