スクリプトファイル"${HOME}/environment/conf-handson-cli-lambda/handson-cli-lambda-boto3-ec2-authorize.sh"を作成します。
手順に必要な設定値を変数に格納をします。
1. スクリプトファイル用ディレクトリ
スクリプトファイル用ディレクトリを指定します。
変数の設定: DIR_SCRIPT="${HOME}/environment/conf-handson-cli-lambda"
変数の設定:
DIR_SCRIPT="${HOME}/environment/conf-handson-cli-lambda"
ディレクトリが存在することを確認します。
コマンド: ls -d ${DIR_SCRIPT} 結果(例:存在する場合): ${HOME}/environment/conf-handson-cli-lambda
コマンド:
ls -d ${DIR_SCRIPT}
結果(例:存在する場合):
${HOME}/environment/conf-handson-cli-lambda
存在しない場合は作成します。
コマンド: mkdir -p ${DIR_SCRIPT} 結果(例): (出力なし)
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
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 # 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}"
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} 結果(例): (出力なし)
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
ls ${FILE_SCRIPT}