ハンズオン(簡易版): Lambda基礎 Boto3 (Python SDK)

2.1.22. スクリプトファイルの作成 (handson-cli-lambda-boto3-ec2-authorize.sh)

手順の目的 [why]

スクリプトファイル"${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize.sh"を作成します。

設定値の指定

設定値の指定

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

1. スクリプトファイル用ディレクトリ

スクリプトファイル用ディレクトリを指定します。

変数の設定:

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

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

コマンド:

ls -d ${DIR_SCRIPT}

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

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

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

コマンド:

mkdir -p ${DIR_SCRIPT}

結果(例):

(出力なし)

2. スクリプトファイル名

スクリプトファイル名を指定します。

変数の設定:

FILE_SCRIPT="${DIR_SCRIPT}/handson-cli-lambda-boto3-ec2-authorize.sh" \
  && echo ${FILE_SCRIPT}

結果(例):

${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize.sh

設定値の確認

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

変数の確認:

cat << END

  # 1. DIR_SCRIPT:"${HOME}/environment/conf-handson-cli-lambda"
       DIR_SCRIPT="${DIR_SCRIPT}"
  # 2. FILE_SCRIPT:"${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize.sh"
       FILE_SCRIPT="${FILE_SCRIPT}"

END

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

処理の実行

スクリプトファイルを作成します。

変数の確認:

cat << END

  # FILE_SCRIPT:"${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize.sh"
    FILE_SCRIPT="${FILE_SCRIPT}"

END

コマンド:

cat << EOF > ${FILE_SCRIPT}
#!/bin/sh

set -u

export AWS_SHARED_CREDENTIALS_FILE="\${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize-user.ini"
export AWS_DEFAULT_PROFILE='handson-cli-lambda-boto3-ec2-authorize-user'
export AWS_DEFAULT_REGION='ap-northeast-1'

readonly LAMBDA_FUNCTION_NAME='handson-cli-lambda-boto3-ec2-authorize-function'
readonly DIR_TMP="\${HOME}/tmp/handson-cli-lambda-boto3-ec2-authorize"
readonly FILE_LAMBDA_FUNCTION_OUTPUT="\${DIR_TMP}/\$\$-output.txt"
readonly FILE_LAMBDA_FUNCTION_LOG="\${DIR_TMP}/\$$.log"
readonly SG_TO_PORT='443'

if [ ! -e \${DIR_TMP} ]; then
  mkdir -p \${DIR_TMP}
fi

IP_LOCAL=\$(curl -s checkip.amazonaws.com)
echo "LocalIP: \${IP_LOCAL}"

readonly STRING_LAMBDA_FUNCTION_PAYLOAD="{\"cidr_ip\": \"\${IP_LOCAL}/32\", \"to_port\": \"\${SG_TO_PORT}\", \"ip_protocol\": \"tcp\"}"

aws lambda invoke \
  --function-name \${LAMBDA_FUNCTION_NAME} \\
  --payload "\${STRING_LAMBDA_FUNCTION_PAYLOAD}" \\
  \${FILE_LAMBDA_FUNCTION_OUTPUT} \\
  > \${FILE_LAMBDA_FUNCTION_LOG}

result=\$?

echo -e "\noutput:"
cat \${FILE_LAMBDA_FUNCTION_OUTPUT}

echo -e "\n\nlog:"
cat \${FILE_LAMBDA_FUNCTION_LOG}

rm \${FILE_LAMBDA_FUNCTION_OUTPUT}
rm \${FILE_LAMBDA_FUNCTION_LOG}
rm -R \${DIR_TMP}

echo -e "\nresult: \${result}"
EOF

cat ${FILE_SCRIPT}

結果(例):

#!/bin/sh

set -u

export AWS_SHARED_CREDENTIALS_FILE="${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize-user.ini"
export AWS_DEFAULT_PROFILE='handson-cli-lambda-boto3-ec2-authorize-user'
export AWS_DEFAULT_REGION='ap-northeast-1'

readonly LAMBDA_FUNCTION_NAME='handson-cli-lambda-boto3-ec2-authorize-function'
readonly DIR_TMP="${HOME}/tmp/handson-cli-lambda-boto3-ec2-authorize"
readonly FILE_LAMBDA_FUNCTION_OUTPUT="${DIR_TMP}/$$-output.txt"
readonly FILE_LAMBDA_FUNCTION_LOG="${DIR_TMP}/$$.log"
readonly SG_TO_PORT='443'

if [ ! -e ${DIR_TMP} ]; then
  mkdir -p ${DIR_TMP}
fi

IP_LOCAL=$(curl -s checkip.amazonaws.com)
echo "LocalIP: ${IP_LOCAL}"

readonly STRING_LAMBDA_FUNCTION_PAYLOAD="{\"cidr_ip\": \"${IP_LOCAL}/32\", \"to_port\": \"${SG_TO_PORT}\", \"ip_protocol\": \"tcp\"}"

aws lambda invoke   --function-name ${LAMBDA_FUNCTION_NAME} \
  --payload "${STRING_LAMBDA_FUNCTION_PAYLOAD}" \
  ${FILE_LAMBDA_FUNCTION_OUTPUT} \
  > ${FILE_LAMBDA_FUNCTION_LOG}

result=$?

echo -e "\noutput:"
cat ${FILE_LAMBDA_FUNCTION_OUTPUT}

echo -e "\n\nlog:"
cat ${FILE_LAMBDA_FUNCTION_LOG}

rm ${FILE_LAMBDA_FUNCTION_OUTPUT}
rm ${FILE_LAMBDA_FUNCTION_LOG}
rm -R ${DIR_TMP}

echo -e "\nresult: ${result}"

スクリプトファイルに実行ビットを付与します。

コマンド:

chmod +x ${FILE_SCRIPT}

結果(例):

(出力なし)

完了確認

「スクリプトファイル名"${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize.sh"が存在する。」ことを確認します。

コマンド:

ls ${FILE_SCRIPT}

結果(例):

${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize.sh

手順の完了