3.4. Lightsailインスタンスのパブリックポートの開放 (handson-cli-lightsail-instance:22022)¶
作業の目的 [why]¶
Lightsailインスタンス"handson-cli-lightsail-instance"のパブリックポート"22022"を開放します。
完了条件/事前条件 [設計者用情報]
完了条件 [after]
主処理は、以下を満たしたときに成功したものとします。
- 完了条件1
Lightsailインスタンス"handson-cli-lightsail-instance"のパブリックポート"22022:tcp"が開放されている。
事前条件 [before]
主処理の実施は、以下の状態であることを前提とします。
- 事前条件1
Lightsailインスタンス"handson-cli-lightsail-instance"が存在する。
- 事前条件2
Lightsailインスタンス"handson-cli-lightsail-instance"のパブリックポート"22022:tcp"が開放されていない。
作業対象 [what]¶
Lightsailインスタンス
標準時間(合計)¶
8分
パラメータ設定¶
- パラメータ設定の標準時間
2分
作業に必要なモノ・情報 [resource]¶
作業開始には、以下が全て揃っていることが必要です。
リソース1: Lightsailインスタンス名
パブリックポートを開放するLightsailインスタンスの名称です。
今回は"handson-cli-lightsail-instance"とします。
リソース2: Lightsailインスタンスのパブリックポートのポート番号(From)
開放するポート番号(From)です。
今回は"|LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM|"とします。
リソース3: Lightsailインスタンスのパブリックポートのポート番号(To)
開放するポート番号(To)です。
今回は"|LIGHTSAIL_INSTANCE_PUBLIC_PORT_TO|"とします。
リソース4: Lightsailインスタンスのパブリックポートのプロトコル
開放するポートのプロトコルです。
今回は"|LIGHTSAIL_INSTANCE_PUBLIC_PORT_PROTOCOL|"とします。
パラメータの指定¶
作業に必要なパラメータを変数に格納をします。
0.1. Lightsailインスタンス名の指定¶
Lightsailインスタンス名を指定します。
変数の設定:
LIGHTSAIL_INSTANCE_NAME="handson-cli-lightsail-instance"
0.2. パブリックポートのFromポート番号の指定¶
パブリックポートのFromポート番号を指定します。
変数の設定:
LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM="22022"
パラメータの保存¶
設定されている変数の保存先となるファイル名を指定します。
変数の設定:
DIR_PARAMETER="${HOME}/tmp/parameter-handson-cli-lightsail" FILE_PARAMETER="${DIR_PARAMETER}/$(date +%Y-%m-%d)-lightsail-instance_public_ports-create.env" \ && echo ${FILE_PARAMETER}
結果(例):
${HOME}/tmp/parameter-handson-cli-lightsail/2020-02-10-lightsail-instance_public_ports-create.env
各変数に正しいパラメータ値が格納されていることを確認しながら保存します。
変数の確認:
cat << EOF > ${FILE_PARAMETER} # 0.0. AWS_DEFAULT_REGION:"ap-northeast-1" AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}" # 0.1. LIGHTSAIL_INSTANCE_NAME:"handson-cli-lightsail-instance" LIGHTSAIL_INSTANCE_NAME="${LIGHTSAIL_INSTANCE_NAME}" # 0.2. LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM:"22022" LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM="${LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM}" # 0.3. LIGHTSAIL_INSTANCE_PUBLIC_PORT_TO:"22022" LIGHTSAIL_INSTANCE_PUBLIC_PORT_TO="${LIGHTSAIL_INSTANCE_PUBLIC_PORT_TO}" # 0.4. LIGHTSAIL_INSTANCE_PUBLIC_PORT_PROTOCOL:"tcp" LIGHTSAIL_INSTANCE_PUBLIC_PORT_PROTOCOL="${LIGHTSAIL_INSTANCE_PUBLIC_PORT_PROTOCOL}" EOF cat ${FILE_PARAMETER}
下段の変数が入っていない、もしくは上段と同等の値が入っていない場合は、それぞれの手順番号に戻って変数の設定を行います。
タスクの実施¶
- タスク標準時間
6分
1. 前処理¶
1.1. 処理対象の状態確認¶
主処理の実施は、以下の状態であることを前提とします。
前提と異なることが判明した場合、直ちに処理を中止します。
事前条件1: Lightsailインスタンス"handson-cli-lightsail-instance"が存在する。
「Lightsailインスタンス"handson-cli-lightsail-instance"が存在する。」ことを確認します。
コマンド:
aws lightsail get-instances \ --query "instances[?name == \`${LIGHTSAIL_INSTANCE_NAME}\`].name" \ --output text
結果(例):
handson-cli-lightsail-instance
事前条件2: Lightsailインスタンス"handson-cli-lightsail-instance"のパブリックポート"22022:tcp"が開放されていない。
「Lightsailインスタンス"handson-cli-lightsail-instance"のパブリックポート"22022:tcp"が開放されていない。」ことを確認します。
コマンド:
aws lightsail get-instances \ --query " \ instances[? \ name == \`${LIGHTSAIL_INSTANCE_NAME}\` \ ].networking[].ports[? \ fromPort == \`${LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM}\`] \ | [0][0].fromPort"
結果(例):
null
1.2. 主処理に必要な情報の取得¶
ポート情報文字列の生成
変数の設定:
STRING_LIGHTSAIL_INSTANCE_PUBLIC_PORT_INFO="fromPort=${LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM},toPort=${LIGHTSAIL_INSTANCE_PUBLIC_PORT_TO},protocol=${LIGHTSAIL_INSTANCE_PUBLIC_PORT_PROTOCOL}" \ && echo ${STRING_LIGHTSAIL_INSTANCE_PUBLIC_PORT_INFO}
結果(例):
fromPort=22022,toPort=22022,protocol=tcp
2. 主処理¶
Lightsailインスタンスのパブリックポート開放¶
変数の確認:
cat << ETX # LIGHTSAIL_INSTANCE_NAME:"handson-cli-lightsail-instance" LIGHTSAIL_INSTANCE_NAME="${LIGHTSAIL_INSTANCE_NAME}" # STRING_LIGHTSAIL_INSTANCE_PUBLIC_PORT_INFO:"fromPort=22022,toPort=22022,protocol=tcp" STRING_LIGHTSAIL_INSTANCE_PUBLIC_PORT_INFO="${STRING_LIGHTSAIL_INSTANCE_PUBLIC_PORT_INFO}" ETX
コマンド:
aws lightsail open-instance-public-ports \ --instance-name ${LIGHTSAIL_INSTANCE_NAME} \ --port-info ${STRING_LIGHTSAIL_INSTANCE_PUBLIC_PORT_INFO}
結果(例):
{ "operation": { "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "resourceName": "handson-cli-lightsail-instance", "resourceType": "Instance", "createdAt": 1234567890.123, "location": { "availabilityZone": "ap-northeast-1a", "regionName": "ap-northeast-1" }, "isTerminal": true, "operationDetails": "22022/tcp", "operationType": "OpenInstancePublicPorts", "status": "Succeeded", "statusChangedAt": 1234567890.123 } }
3. 後処理¶
3.2. 完了条件の確認¶
主処理は、以下を満たしたときに成功したものとします。
完了条件1: Lightsailインスタンス"handson-cli-lightsail-instance"のパブリックポート"22022:tcp"が開放されている。
「Lightsailインスタンス"handson-cli-lightsail-instance"のパブリックポート"22022:tcp"が開放されている。」ことを確認します。
コマンド:
aws lightsail get-instances \ --query " \ instances[? \ name == \`${LIGHTSAIL_INSTANCE_NAME}\` \ ].networking[].ports[? \ fromPort == \`${LIGHTSAIL_INSTANCE_PUBLIC_PORT_FROM}\`] \ | [0][0].fromPort"
結果(例):
22022