0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめてのアドベントカレンダーAdvent Calendar 2023

Day 6

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

Posted at

AWS Lambdaに作成した関数の整理をしたいと思いました。

Lambda関数が10個を超えたら、AWS管理コンソールでペチペチクリックの繰り返しが42歳にはキツイ(´Д`;)

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

利用手順

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

S3バケット構成例

バケット名
  > lambda

スクリプトコード例

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

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

# 指定されたリージョン内のすべてのLambda関数のリストを取得
lambda_functions=$(aws lambda list-functions --query 'Functions[].FunctionName' --output text)

# 各Lambda関数をエクスポートしてS3にアップロード
for LAMBDA_FUNCTION_NAME in $lambda_functions; do
    # Lambda関数のコードのURLを取得
    aws lambda get-function --function-name $LAMBDA_FUNCTION_NAME --query 'Code.Location' --output text > lambda_function_url.txt

    # Lambda関数の定義をYAML形式でダウンロード
    aws lambda get-function --function-name $LAMBDA_FUNCTION_NAME --output yaml > $LAMBDA_FUNCTION_NAME.yaml

    # Lambda関数コードのダウンロード
    wget -O lambda_function.zip -i lambda_function_url.txt

    # S3バケット内の指定されたフォルダにLambda関数のZIPファイルとYAMLファイルをアップロード
    aws s3 cp lambda_function.zip s3://$S3_BUCKET/$S3_FOLDER/$LAMBDA_FUNCTION_NAME/$LAMBDA_FUNCTION_NAME.zip
    aws s3 cp $LAMBDA_FUNCTION_NAME.yaml s3://$S3_BUCKET/$S3_FOLDER/$LAMBDA_FUNCTION_NAME/$LAMBDA_FUNCTION_NAME.yaml

    # 一時ファイルの削除
    rm lambda_function_url.txt lambda_function.zip $LAMBDA_FUNCTION_NAME.yaml
done
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?