ハンズオン(簡易版): Lambda基礎 レイヤー

4.1. Lambdaレイヤーコンテンツの更新 (handson-cli-lambda-basic-layer)

手順の目的 [why]

Lambdaレイヤー"handson-cli-lambda-basic-layer"のコンテンツを更新します。

設定値の指定

設定値の指定

手順に必要な設定値を変数に格納をします。

1. Lambdaレイヤーコンテンツ保存用ディレクトリ

Lambdaレイヤーコンテンツ保存用ディレクトリを指定します。

変数の設定:

DIR_LAMBDA_LAYER_CONTENT="${HOME}/environment/conf-handson-cli-lambda"

2. LambdaレイヤーコンテンツZIPファイル用ディレクトリ

LambdaレイヤーコンテンツZIPファイル用ディレクトリを指定します。

変数の設定:

DIR_LAMBDA_LAYER_ZIP="${HOME}/environment/artifact-handson-cli-lambda"

ディレクトリが存在することを確認します。

コマンド:

ls -d ${DIR_LAMBDA_LAYER_ZIP}

結果(例:存在する場合):

${HOME}/environment/artifact-handson-cli-lambda

存在しない場合は作成します。

コマンド:

mkdir -p ${DIR_LAMBDA_LAYER_ZIP}

結果(例):

(出力なし)

3. LambdaレイヤーコンテンツZIPファイル

LambdaレイヤーコンテンツZIPファイルを指定します。

変数の設定:

LAMBDA_LAYER_NAME='handson-cli-lambda-basic-layer'

変数の設定:

FILE_LAMBDA_LAYER_ZIP="${DIR_LAMBDA_LAYER_ZIP}/${LAMBDA_LAYER_NAME}-2.zip" \
  && echo ${FILE_LAMBDA_LAYER_ZIP}

結果(例):

${HOME}/environment/artifact-handson-cli-lambda/handson-cli-lambda-basic-layer-2.zip

設定値の確認

各変数に正しい設定値が格納されていることを確認しながら保存します。

変数の確認:

cat << END

  # 1. DIR_LAMBDA_LAYER_CONTENT:"${HOME}/environment/conf-handson-cli-lambda"
       DIR_LAMBDA_LAYER_CONTENT="${DIR_LAMBDA_LAYER_CONTENT}"
  # 2. DIR_LAMBDA_LAYER_ZIP:"${HOME}/environment/artifact-handson-cli-lambda"
       DIR_LAMBDA_LAYER_ZIP="${DIR_LAMBDA_LAYER_ZIP}"
  # 3. FILE_LAMBDA_LAYER_ZIP:"${HOME}/environment/artifact-handson-cli-lambda/handson-cli-lambda-basic-layer-2.zip"
       FILE_LAMBDA_LAYER_ZIP="${FILE_LAMBDA_LAYER_ZIP}"

END

下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。

処理の実行

Lambdaレイヤーコンテンツを更新します。

Lambdaレイヤーコンテンツ用ディレクトリの更新

Lambdaレイヤーコンテンツ用ディレクトリを更新します。

変数の設定:

DIR_LAMBDA_LAYER_CONTENT_PYTHON="${DIR_LAMBDA_LAYER_CONTENT}/python"

ライブラリのインストール

ライブラリをインストールします。

コマンド:

pip install -t ${DIR_LAMBDA_LAYER_CONTENT_PYTHON} requests

結果(例):

(略)
Successfully installed certifi-2020.12.5 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.3

Lambdaレイヤーコンテンツの作成

Lambdaレイヤーコンテンツを作成します。

コマンド:

cat << EOF > ${DIR_LAMBDA_LAYER_CONTENT_PYTHON}/world.py
import requests

def get(url):
    r = requests.get(url)

    status_code = r.status_code

    return status_code
EOF

cat ${DIR_LAMBDA_LAYER_CONTENT_PYTHON}/world.py

結果(例):

import requests

def get(url):
    r = requests.get(url)

    status_code = r.status_code

    return status_code

ZIPファイルを作成します。

コマンド:

pushd ${DIR_LAMBDA_LAYER_CONTENT} \
  && zip -r -X ${FILE_LAMBDA_LAYER_ZIP} python/ \
  && popd

結果(例):

~/environment/conf-handson-cli-lambda ~/environment
  adding: python/ (stored 0%)
  adding: python/hello.py (deflated 5%)
  adding: python/certifi/ (stored 0%)
  adding: python/certifi/__init__.py (stored 0%)
  adding: python/certifi/__main__.py (deflated 39%)
  adding: python/certifi/cacert.pem (deflated 46%)
  adding: python/certifi/core.py (deflated 57%)
  adding: python/certifi/__init__.pyc (deflated 26%)
  adding: python/certifi/__main__.pyc (deflated 35%)
  adding: python/certifi/core.pyc (deflated 52%)
  adding: python/certifi-2020.12.5.dist-info/ (stored 0%)
  adding: python/certifi-2020.12.5.dist-info/LICENSE (deflated 43%)
  adding: python/certifi-2020.12.5.dist-info/METADATA (deflated 59%)
  adding: python/certifi-2020.12.5.dist-info/WHEEL (deflated 14%)
  adding: python/certifi-2020.12.5.dist-info/top_level.txt (stored 0%)
  adding: python/certifi-2020.12.5.dist-info/RECORD (deflated 42%)
  adding: python/certifi-2020.12.5.dist-info/INSTALLER (stored 0%)
  adding: python/urllib3/ (stored 0%)
  adding: python/urllib3/__init__.py (deflated 60%)
  adding: python/urllib3/_collections.py (deflated 69%)
  adding: python/urllib3/_version.py (stored 0%)
  adding: python/urllib3/connection.py (deflated 69%)
  adding: python/urllib3/connectionpool.py (deflated 72%)
  adding: python/urllib3/exceptions.py (deflated 69%)
  adding: python/urllib3/fields.py (deflated 70%)
  adding: python/urllib3/filepost.py (deflated 63%)
  adding: python/urllib3/poolmanager.py (deflated 71%)
  adding: python/urllib3/request.py (deflated 67%)
  adding: python/urllib3/response.py (deflated 73%)
  adding: python/urllib3/__init__.pyc (deflated 50%)
  adding: python/urllib3/_collections.pyc (deflated 63%)
  adding: python/urllib3/_version.pyc (deflated 27%)
  adding: python/urllib3/connection.pyc (deflated 56%)
  adding: python/urllib3/connectionpool.pyc (deflated 61%)
  adding: python/urllib3/exceptions.pyc (deflated 73%)
  adding: python/urllib3/fields.pyc (deflated 60%)
  adding: python/urllib3/filepost.pyc (deflated 55%)
  adding: python/urllib3/poolmanager.pyc (deflated 60%)
  adding: python/urllib3/request.pyc (deflated 58%)
  adding: python/urllib3/response.pyc (deflated 62%)
  adding: python/urllib3/contrib/ (stored 0%)
  adding: python/urllib3/contrib/__init__.py (stored 0%)
  adding: python/urllib3/contrib/_appengine_environ.py (deflated 54%)
  adding: python/urllib3/contrib/appengine.py (deflated 71%)
  adding: python/urllib3/contrib/ntlmpool.py (deflated 65%)
  adding: python/urllib3/contrib/pyopenssl.py (deflated 69%)
  adding: python/urllib3/contrib/securetransport.py (deflated 72%)
  adding: python/urllib3/contrib/socks.py (deflated 70%)
  adding: python/urllib3/contrib/__init__.pyc (deflated 27%)
  adding: python/urllib3/contrib/_appengine_environ.pyc (deflated 58%)
  adding: python/urllib3/contrib/appengine.pyc (deflated 57%)
  adding: python/urllib3/contrib/ntlmpool.pyc (deflated 51%)
  adding: python/urllib3/contrib/pyopenssl.pyc (deflated 61%)
  adding: python/urllib3/contrib/securetransport.pyc (deflated 61%)
  adding: python/urllib3/contrib/socks.pyc (deflated 57%)
  adding: python/urllib3/contrib/_securetransport/ (stored 0%)
  adding: python/urllib3/contrib/_securetransport/__init__.py (stored 0%)
  adding: python/urllib3/contrib/_securetransport/bindings.py (deflated 75%)
  adding: python/urllib3/contrib/_securetransport/low_level.py (deflated 68%)
  adding: python/urllib3/contrib/_securetransport/__init__.pyc (deflated 24%)
  adding: python/urllib3/contrib/_securetransport/bindings.pyc (deflated 59%)
  adding: python/urllib3/contrib/_securetransport/low_level.pyc (deflated 59%)
  adding: python/urllib3/packages/ (stored 0%)
  adding: python/urllib3/packages/__init__.py (deflated 26%)
  adding: python/urllib3/packages/six.py (deflated 75%)
  adding: python/urllib3/packages/__init__.pyc (deflated 29%)
  adding: python/urllib3/packages/six.pyc (deflated 67%)
  adding: python/urllib3/packages/backports/ (stored 0%)
  adding: python/urllib3/packages/backports/__init__.py (stored 0%)
  adding: python/urllib3/packages/backports/makefile.py (deflated 59%)
  adding: python/urllib3/packages/backports/__init__.pyc (deflated 26%)
  adding: python/urllib3/packages/backports/makefile.pyc (deflated 44%)
  adding: python/urllib3/packages/ssl_match_hostname/ (stored 0%)
  adding: python/urllib3/packages/ssl_match_hostname/__init__.py (deflated 55%)
  adding: python/urllib3/packages/ssl_match_hostname/_implementation.py (deflated 61%)
  adding: python/urllib3/packages/ssl_match_hostname/__init__.pyc (deflated 37%)
  adding: python/urllib3/packages/ssl_match_hostname/_implementation.pyc (deflated 51%)
  adding: python/urllib3/util/ (stored 0%)
  adding: python/urllib3/util/__init__.py (deflated 59%)
  adding: python/urllib3/util/connection.py (deflated 60%)
  adding: python/urllib3/util/proxy.py (deflated 62%)
  adding: python/urllib3/util/queue.py (deflated 49%)
  adding: python/urllib3/util/request.py (deflated 63%)
  adding: python/urllib3/util/response.py (deflated 61%)
  adding: python/urllib3/util/retry.py (deflated 73%)
  adding: python/urllib3/util/ssl_.py (deflated 66%)
  adding: python/urllib3/util/ssltransport.py (deflated 70%)
  adding: python/urllib3/util/timeout.py (deflated 70%)
  adding: python/urllib3/util/url.py (deflated 66%)
  adding: python/urllib3/util/wait.py (deflated 63%)
  adding: python/urllib3/util/__init__.pyc (deflated 46%)
  adding: python/urllib3/util/connection.pyc (deflated 49%)
  adding: python/urllib3/util/proxy.pyc (deflated 50%)
  adding: python/urllib3/util/queue.pyc (deflated 60%)
  adding: python/urllib3/util/request.pyc (deflated 53%)
  adding: python/urllib3/util/response.pyc (deflated 49%)
  adding: python/urllib3/util/retry.pyc (deflated 63%)
  adding: python/urllib3/util/ssl_.pyc (deflated 56%)
  adding: python/urllib3/util/ssltransport.pyc (deflated 64%)
  adding: python/urllib3/util/timeout.pyc (deflated 64%)
  adding: python/urllib3/util/url.pyc (deflated 54%)
  adding: python/urllib3/util/wait.pyc (deflated 59%)
  adding: python/urllib3-1.26.3.dist-info/ (stored 0%)
  adding: python/urllib3-1.26.3.dist-info/LICENSE.txt (deflated 41%)
  adding: python/urllib3-1.26.3.dist-info/METADATA (deflated 65%)
  adding: python/urllib3-1.26.3.dist-info/WHEEL (deflated 14%)
  adding: python/urllib3-1.26.3.dist-info/top_level.txt (stored 0%)
  adding: python/urllib3-1.26.3.dist-info/RECORD (deflated 56%)
  adding: python/urllib3-1.26.3.dist-info/INSTALLER (stored 0%)
  adding: python/idna/ (stored 0%)
  adding: python/idna/__init__.py (deflated 12%)
  adding: python/idna/codec.py (deflated 76%)
  adding: python/idna/compat.py (deflated 38%)
  adding: python/idna/core.py (deflated 76%)
  adding: python/idna/idnadata.py (deflated 79%)
  adding: python/idna/intranges.py (deflated 58%)
  adding: python/idna/package_data.py (stored 0%)
  adding: python/idna/uts46data.py (deflated 81%)
  adding: python/idna/__init__.pyc (deflated 25%)
  adding: python/idna/codec.pyc (deflated 64%)
  adding: python/idna/compat.pyc (deflated 55%)
  adding: python/idna/core.pyc (deflated 60%)
  adding: python/idna/idnadata.pyc (deflated 76%)
  adding: python/idna/intranges.pyc (deflated 50%)
  adding: python/idna/package_data.pyc (deflated 23%)
  adding: python/idna/uts46data.pyc (deflated 76%)
  adding: python/idna-2.10.dist-info/ (stored 0%)
  adding: python/idna-2.10.dist-info/LICENSE.rst (deflated 48%)
  adding: python/idna-2.10.dist-info/METADATA (deflated 63%)
  adding: python/idna-2.10.dist-info/WHEEL (deflated 14%)
  adding: python/idna-2.10.dist-info/top_level.txt (stored 0%)
  adding: python/idna-2.10.dist-info/RECORD (deflated 42%)
  adding: python/idna-2.10.dist-info/INSTALLER (stored 0%)
  adding: python/chardet/ (stored 0%)
  adding: python/chardet/__init__.py (deflated 65%)
  adding: python/chardet/big5freq.py (deflated 53%)
  adding: python/chardet/big5prober.py (deflated 53%)
  adding: python/chardet/chardistribution.py (deflated 75%)
  adding: python/chardet/charsetgroupprober.py (deflated 70%)
  adding: python/chardet/charsetprober.py (deflated 61%)
  adding: python/chardet/codingstatemachine.py (deflated 60%)
  adding: python/chardet/compat.py (deflated 50%)
  adding: python/chardet/cp949prober.py (deflated 53%)
  adding: python/chardet/enums.py (deflated 58%)
  adding: python/chardet/escprober.py (deflated 66%)
  adding: python/chardet/escsm.py (deflated 85%)
  adding: python/chardet/eucjpprober.py (deflated 65%)
  adding: python/chardet/euckrfreq.py (deflated 54%)
  adding: python/chardet/euckrprober.py (deflated 53%)
  adding: python/chardet/euctwfreq.py (deflated 53%)
  adding: python/chardet/euctwprober.py (deflated 53%)
  adding: python/chardet/gb2312freq.py (deflated 51%)
  adding: python/chardet/gb2312prober.py (deflated 53%)
  adding: python/chardet/hebrewprober.py (deflated 66%)
  adding: python/chardet/jisfreq.py (deflated 52%)
  adding: python/chardet/jpcntx.py (deflated 75%)
  adding: python/chardet/langbulgarianmodel.py (deflated 93%)
  adding: python/chardet/langgreekmodel.py (deflated 94%)
  adding: python/chardet/langhebrewmodel.py (deflated 94%)
  adding: python/chardet/langhungarianmodel.py (deflated 93%)
  adding: python/chardet/langrussianmodel.py (deflated 92%)
  adding: python/chardet/langthaimodel.py (deflated 93%)
  adding: python/chardet/langturkishmodel.py (deflated 93%)
  adding: python/chardet/latin1prober.py (deflated 69%)
  adding: python/chardet/mbcharsetprober.py (deflated 64%)
  adding: python/chardet/mbcsgroupprober.py (deflated 56%)
  adding: python/chardet/mbcssm.py (deflated 87%)
  adding: python/chardet/sbcharsetprober.py (deflated 67%)
  adding: python/chardet/sbcsgroupprober.py (deflated 67%)
  adding: python/chardet/sjisprober.py (deflated 65%)
  adding: python/chardet/universaldetector.py (deflated 72%)
  adding: python/chardet/utf8prober.py (deflated 60%)
  adding: python/chardet/version.py (deflated 24%)
  adding: python/chardet/__init__.pyc (deflated 54%)
  adding: python/chardet/big5freq.pyc (deflated 76%)
  adding: python/chardet/big5prober.pyc (deflated 55%)
  adding: python/chardet/chardistribution.pyc (deflated 72%)
  adding: python/chardet/charsetgroupprober.pyc (deflated 58%)
  adding: python/chardet/charsetprober.pyc (deflated 59%)
  adding: python/chardet/codingstatemachine.pyc (deflated 61%)
  adding: python/chardet/compat.pyc (deflated 38%)
  adding: python/chardet/cp949prober.pyc (deflated 55%)
  adding: python/chardet/enums.pyc (deflated 62%)
  adding: python/chardet/escprober.pyc (deflated 55%)
  adding: python/chardet/escsm.pyc (deflated 89%)
  adding: python/chardet/eucjpprober.pyc (deflated 57%)
  adding: python/chardet/euckrfreq.pyc (deflated 77%)
  adding: python/chardet/euckrprober.pyc (deflated 55%)
  adding: python/chardet/euctwfreq.pyc (deflated 76%)
  adding: python/chardet/euctwprober.pyc (deflated 55%)
  adding: python/chardet/gb2312freq.pyc (deflated 75%)
  adding: python/chardet/gb2312prober.pyc (deflated 56%)
  adding: python/chardet/hebrewprober.pyc (deflated 59%)
  adding: python/chardet/jisfreq.pyc (deflated 77%)
  adding: python/chardet/jpcntx.pyc (deflated 81%)
  adding: python/chardet/langbulgarianmodel.pyc (deflated 88%)
  adding: python/chardet/langgreekmodel.pyc (deflated 90%)
  adding: python/chardet/langhebrewmodel.pyc (deflated 90%)
  adding: python/chardet/langhungarianmodel.pyc (deflated 89%)
  adding: python/chardet/langrussianmodel.pyc (deflated 88%)
  adding: python/chardet/langthaimodel.pyc (deflated 88%)
  adding: python/chardet/langturkishmodel.pyc (deflated 88%)
  adding: python/chardet/latin1prober.pyc (deflated 67%)
  adding: python/chardet/mbcharsetprober.pyc (deflated 57%)
  adding: python/chardet/mbcsgroupprober.pyc (deflated 54%)
  adding: python/chardet/mbcssm.pyc (deflated 91%)
  adding: python/chardet/sbcharsetprober.pyc (deflated 54%)
  adding: python/chardet/sbcsgroupprober.pyc (deflated 53%)
  adding: python/chardet/sjisprober.pyc (deflated 57%)
  adding: python/chardet/universaldetector.pyc (deflated 54%)
  adding: python/chardet/utf8prober.pyc (deflated 56%)
  adding: python/chardet/version.pyc (deflated 28%)
  adding: python/chardet/cli/ (stored 0%)
  adding: python/chardet/cli/__init__.py (stored 0%)
  adding: python/chardet/cli/chardetect.py (deflated 57%)
  adding: python/chardet/cli/__init__.pyc (deflated 29%)
  adding: python/chardet/cli/chardetect.pyc (deflated 48%)
  adding: python/chardet/metadata/ (stored 0%)
  adding: python/chardet/metadata/__init__.py (stored 0%)
  adding: python/chardet/metadata/languages.py (deflated 75%)
  adding: python/chardet/metadata/__init__.pyc (deflated 27%)
  adding: python/chardet/metadata/languages.pyc (deflated 50%)
  adding: python/chardet-4.0.0.dist-info/ (stored 0%)
  adding: python/chardet-4.0.0.dist-info/LICENSE (deflated 65%)
  adding: python/chardet-4.0.0.dist-info/METADATA (deflated 59%)
  adding: python/chardet-4.0.0.dist-info/WHEEL (deflated 14%)
  adding: python/chardet-4.0.0.dist-info/entry_points.txt (deflated 20%)
  adding: python/chardet-4.0.0.dist-info/top_level.txt (stored 0%)
  adding: python/chardet-4.0.0.dist-info/RECORD (deflated 53%)
  adding: python/chardet-4.0.0.dist-info/INSTALLER (stored 0%)
  adding: python/requests/ (stored 0%)
  adding: python/requests/__init__.py (deflated 60%)
  adding: python/requests/__version__.py (deflated 40%)
  adding: python/requests/_internal_utils.py (deflated 51%)
  adding: python/requests/adapters.py (deflated 75%)
  adding: python/requests/api.py (deflated 75%)
  adding: python/requests/auth.py (deflated 71%)
  adding: python/requests/certs.py (deflated 35%)
  adding: python/requests/compat.py (deflated 66%)
  adding: python/requests/cookies.py (deflated 73%)
  adding: python/requests/exceptions.py (deflated 66%)
  adding: python/requests/help.py (deflated 69%)
  adding: python/requests/hooks.py (deflated 50%)
  adding: python/requests/models.py (deflated 71%)
  adding: python/requests/packages.py (deflated 42%)
  adding: python/requests/sessions.py (deflated 72%)
  adding: python/requests/status_codes.py (deflated 60%)
  adding: python/requests/structures.py (deflated 62%)
  adding: python/requests/utils.py (deflated 68%)
  adding: python/requests/__init__.pyc (deflated 47%)
  adding: python/requests/__version__.pyc (deflated 34%)
  adding: python/requests/_internal_utils.pyc (deflated 47%)
  adding: python/requests/adapters.pyc (deflated 63%)
  adding: python/requests/api.pyc (deflated 72%)
  adding: python/requests/auth.pyc (deflated 62%)
  adding: python/requests/certs.pyc (deflated 34%)
  adding: python/requests/compat.pyc (deflated 49%)
  adding: python/requests/cookies.pyc (deflated 66%)
  adding: python/requests/exceptions.pyc (deflated 73%)
  adding: python/requests/help.pyc (deflated 50%)
  adding: python/requests/hooks.pyc (deflated 48%)
  adding: python/requests/models.pyc (deflated 61%)
  adding: python/requests/packages.pyc (deflated 34%)
  adding: python/requests/sessions.pyc (deflated 62%)
  adding: python/requests/status_codes.pyc (deflated 54%)
  adding: python/requests/structures.pyc (deflated 65%)
  adding: python/requests/utils.pyc (deflated 58%)
  adding: python/requests-2.25.1.dist-info/ (stored 0%)
  adding: python/requests-2.25.1.dist-info/LICENSE (deflated 65%)
  adding: python/requests-2.25.1.dist-info/METADATA (deflated 57%)
  adding: python/requests-2.25.1.dist-info/WHEEL (deflated 14%)
  adding: python/requests-2.25.1.dist-info/top_level.txt (stored 0%)
  adding: python/requests-2.25.1.dist-info/RECORD (deflated 48%)
  adding: python/requests-2.25.1.dist-info/INSTALLER (stored 0%)
  adding: python/world.py (deflated 36%)
~/environment

完了確認

「LambdaレイヤーコンテンツZIPファイル"${HOME}/environment/artifact-handson-cli-lambda/handson-cli-lambda-basic-layer-2.zip"が存在する。」ことを確認します。

コマンド:

ls ${FILE_LAMBDA_LAYER_ZIP}

結果(例):

${HOME}/environment/artifact-handson-cli-lambda/handson-cli-lambda-basic-layer-2.zip

手順の完了