質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

3923閲覧

AWSにおいてEBSスナップショットを作成してEC2を復元させるシェルスクリプトについて

momo2

総合スコア21

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2019/01/08 11:08

編集2019/01/10 13:45

宜しくお願いします。
現在、AWSのEC2でwindows server 2016を作成しております。
複数台作成はできるのですが、そのscriptについて教えていただきたいです。
aws cliでは、コマンドを作れるのですが、スクリプトで書けず、止まっています。
~やりたい内容~
1.
インスタンス作成(original)
(大本となるインスタンスを完成させる)
2.
2-1
大本のインスタンスを作った、ボリュームからスナップショットを作成する。
2-2
そのスナップショットから複製に使うボリュームを作成する。
(必要分だけ、ボリュームを作成する)
3.
3-1.
新しくインスタンスを作成する(これは、複製するインスタンスになる)
(必要分だけ、インスタンスを作成する)
(*これに関しては、事前に手動での作成も考えている)
3-2.
全てボリュームをデタッチする。
4.
2.で作ったボリュームを新しい3.で作ったインスタンスにアタッチする。
5.
4.でアタッチした後、インスタンスを起動する。
6.
新インスタンスに接続する。
AWS cli のコマンドはありますが、.shのファイルにそのまま記載しても、当たり前ではありますが、実行はされず、
困っています。
纏めて、1つのファイル実行で、複数(~10数台)を起動させたい。
cronなどは使わず。

#!/usr/bin/env bash _INSTANCE_ID="${i-xxxxxxxxxxx}" _ROOT_DEVICE="/dev/sda1" _CHECK_INTERVAL=60 echo "処理を続行しますか? [Y/n]" read ANSWER case ${ANSWER} in [yY]) echo "処理を続行します..." ;; [nN]) echo "$(date '+%Y-%m-%d %H:%M:%S') 処理を終了します..." exit 0 ;; *) echo "$(date '+%Y-%m-%d %H:%M:%S') 処理を終了します..." exit 0 ;; esac if [ -f tmp/snapshot_ids ];then rm tmp/snapshot_ids fi for ebs in $(aws ec2 describe-instances --filters Name=instance-id,Values=${_INSTANCE_ID} --query 'Reservations[].Instances[].BlockDeviceMappings[].Ebs.VolumeId' --output text); do _SNAPSHOT_ID=$(aws ec2 create-snapshot --volume-id ${ebs} | jq -r .SnapshotId) echo ${_SNAPSHOT_ID} >> tmp/snapshot_ids _DEVICE=$(aws ec2 describe-volumes --volume-ids ${ebs} --query Volumes[].Attachments[].Device --output text) if [ "${_DEVICE}" == "${_ROOT_DEVICE}" ];then aws ec2 create-tags --resources ${_SNAPSHOT_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value="OS" else aws ec2 create-tags --resources ${_SNAPSHOT_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value="DATA" fi done if [ `-f tmp/snapshot_ids -a $(wc -l tmp/snapshot_ids | awk '{print $1}') == 2` ];then

↑ここの行で
wc: tmp/snapshot_ids: そのようなファイルやディレクトリはありません
./snapshot.sh: 行 34: -f: コマンドが見つかりません
スナップショットの作成に失敗しました.処理を中断します.
このように表示されてしまいます。(2-1.解決済)
どうかご教示頂きたいです。
宜しくお願いします。
以下、参考にしているURLになります。
リンク内容

*1

<new ver> ``` #!/usr/bin/env bash _INSTANCE_ID="i-xxxxxxxxxxxx" _ROOT_DEVICE="/dev/sda1" _CHECK_INTERVAL="60" _OS1="OS1" _OS1_restore="OS1_restore"

echo "処理を続行しますか? [Y/n]"
read ANSWER
case ${ANSWER} in
[yY]) echo "処理を続行します..."
;;
[nN]) echo "$(date '+%Y-%m-%d %H:%M:%S') 処理を終了します..."
exit 0 ;;
*) echo "$(date '+%Y-%m-%d %H:%M:%S') 処理を終了します..."
exit 0 ;;
esac
if [ -f tmp/snapshot_ids ];then
rm tmp/snapshot_ids
fi
for ebs in $(aws ec2 describe-instances --filters Name=instance-id,Values=${_INSTANCE_ID} --query 'Reservations[].Instances[].BlockDeviceMappings[].Ebs.VolumeId' --output text);
do
_SNAPSHOT_ID=$(aws ec2 create-snapshot --volume-id ${ebs} | jq -r .SnapshotId)
echo ${_SNAPSHOT_ID} >> tmp/snapshot_ids
_DEVICE=$(aws ec2 describe-volumes --volume-ids ${ebs} --query Volumes[].Attachments[].Device --output text)
if [ "${_DEVICE}" = "${_ROOT_DEVICE}" ];then
aws ec2 create-tags --resources ${_SNAPSHOT_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value=${_OS1}
else
aws ec2 create-tags --resources ${_SNAPSHOT_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value="DATA"
fi
done
#if [ -f tmp/snapshot_ids -a $(cat tmp/snapshot_ids | wc -l) = "2" ];then

echo ${_SLACK_CHANNEL} "スナップショットの作成を開始しました..."

#else

echo ${_SLACK_CHANNEL} "スナップショットの作成に失敗しました.処理を中断します."

exit 1

#fi
aws ec2 wait snapshot-completed --snapshot-ids $(cat tmp/snapshot_ids)
if [ $? == 0 ]; then
echo "スナップショットの作成が完了しました."
fi

tmp/snapshot_ids のチェック

if [ ! -f tmp/snapshot_ids ];then
echo "tmp/snapshot_ids が存在しません.マネジメントコンソールにて処理を継続して下さい."
exit 1
fi

ボリュームの作成

echo "スナップショットからボリュームを作成します..."
while read snapshot_id
do
_DEVICE=$(aws ec2 describe-tags --filters "Name=resource-id,Values=${snapshot_id}" "Name=key,Values=device" --query Tags[].Value --output text)
_VOLUME_ID=$(aws ec2 create-volume --availability-zone ap-northeast-1a --snapshot-id ${snapshot_id} --volume-type gp2 --query VolumeId --output text)
if [ "${_DEVICE}" = "/dev/sda1" ];then
aws ec2 create-tags --resources ${_VOLUME_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value=${_OS1_restore}
[ $? == 0 ] && _RESULT_1=0 || _RESULT_1=1
else
aws ec2 create-tags --resources ${_VOLUME_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value="DATA_restore"
[ $? == 0 ] && _RESULT_2=0 || _RESULT_2=1
fi
done < tmp/snapshot_ids
_RESULT=${_RESULT_1}${_RESULT_2}
if [ "${_RESULT}" == "00" ];then
echo "ボリュームを作成しました. 引続き処理を続行します."
else
echo "ボリュームの作成に失敗しました."
fi

### *2 ```aws ec2 wait snapshot-completed --snapshot-ids $(cat tmp/snapshot_ids) if [ $? -eq 0 ]; then echo "スナップショットの作成が完了しました." fi # tmp/snapshot_ids のチェック if [ ! -f tmp/snapshot_ids ];then echo "tmp/snapshot_ids が存在しません.マネジメントコンソールにて処理を継続して下さい." exit 1 fi # ボリュームの作成 echo "スナップショットからボリュームを作成します..." while read snapshot_id do _DEVICE=$(aws ec2 describe-tags --filters "Name=resource-id,Values=${snapshot_id}" "Name=key,Values=device" --query Tags[].Value --output text) _VOLUME_ID=$(aws ec2 create-volume --availability-zone ap-northeast-1a --snapshot-id ${snapshot_id} --volume-type gp2 --query VolumeId --output text) if [ "${_DEVICE}" = "/dev/sda1" ];then aws ec2 create-tags --resources ${_VOLUME_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value=${_OS1_restore} [ $? -eq 0 ] && _RESULT_1=0 || _RESULT_1=1 else aws ec2 create-tags --resources ${_VOLUME_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value="DATA_restore" [ $? -eq 0 ] && _RESULT_2=0 || _RESULT_2=1 fi done < tmp/snapshot_ids _RESULT=${_RESULT_1}${_RESULT_2} if [ "${_RESULT}" = "00" ];then echo "ボリュームを作成しました. 引続き処理を続行します." else echo "ボリュームの作成に失敗しました." fi

*3

_DEVICE=$(aws ec2 describe-tags --filters "Name=resource-id,Values=${snapshot_id}" "Name=key,Values=device" --query Tags[].Value --output text) _VOLUME_ID=$(aws ec2 create-volume --availability-zone ap-northeast-1a --snapshot-id ${snapshot_id} --volume-type gp2 --query VolumeId --output text) if [ "${_DEVICE}" = "/dev/sda1" ];then aws ec2 create-tags --resources ${_VOLUME_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value=${_OS1_restore} [ $? -eq 0 ] && _RESULT_1=0 || _RESULT_1=1 else aws ec2 create-tags --resources ${_VOLUME_ID} --tags Key=device,Value=${_DEVICE} Key=Name,Value="DATA_restore" [ $? -eq 0 ] && _RESULT_2=0 || _RESULT_2=1 fi done < tmp/snapshot_ids #_RESULT=${_RESULT_1}${_RESULT_2} #if [ "${_RESULT}" = "00" ];then if [ _RESULT_1=0,_RESULT_2=0 ];then #~set により解読~ ++ aws ec2 describe-tags --filters Name=resource-id,Values=snap-xxx Name=key,Values=device --query 'Tags[].Value' --output text + _DEVICE=/dev/sda1 ++ aws ec2 create-volume --availability-zone ap-northeast-1a --snapshot-id snap-xxx --volume-type gp2 --query VolumeId --output text + _VOLUME_ID=vol-xxx + '[' /dev/sda1 = /dev/sda1 ']' + aws ec2 create-tags --resources vol-xxx --tags Key=device,Value=/dev/sda1 Key=Name,Value=OS1_restore + '[' 0 -eq 0 ']' + _RESULT_1=0 + read snapshot_id + '[' _RESULT_1=0,_RESULT_2=0 ']'

*4

#条件変更(インスタンス停止したいIDを_INSTANCE1_IDとしました) #!/usr/bin/env bash #original######################### _INSTANCE_ID="i-xxx" #create instance################## _INSTANCE1_ID="i-yyy" #tag############################## _OS="OS1" _OS_restore="OS1_restore" ###################################### _ROOT_DEVICE="/dev/sda1" _CHECK_INTERVAL="60" #~~~~~前回のresultの続きボリューム作成後になります。 # インスタンスの停止 echo "インスタンスを停止します..." aws ec2 stop-instances --instance-ids ${_INSTANCE1_ID} echo "インスタンスの停止まで待機します..." aws ec2 wait instance-stopped --instance-ids ${_INSTANCE1_ID} if [ $? -eq 0 ];then echo "インスタンスの停止が完了しました. 引続き処理を続行します." else echo "インスタンスの停止に失敗しました." exit 1 fi # インスタンスからボリュームをデタッチ echo "インスタンスからボリュームをデタッチします..." for ebs in $(aws ec2 describe-instances --filters Name=instance-id,Values=${_INSTANCE1_ID} --query 'Reservations[].Instances[].BlockDeviceMappings[].Ebs.VolumeId' --output text); do aws ec2 detach-volume --volume-id ${ebs} done echo "インスタンスからボリュームをデタッチしました. 引続き処理を続行します." # インスタンスに付与するボリュームの情報を取得 echo "インスタンスに付与するボリュームの情報を取得します..." if [ -f tmp/volume_info ];then rm tmp/volume_info fi for _NAME in _OS_restore DATA_restore do aws ec2 describe-volumes \ --filters Name=tag-key,Values="Name" Name=tag-value,Values="${_NAME}" \ | jq -r '[.Volumes[]|.VolumeId,(.Tags[] | select(.Key=="device").Value)]|@csv' >> tmp/volume_info done echo "インスタンスに付与するボリュームの情報を取得しました. 引続き処理を続行します." echo "インスタンスにボリュームをアタッチします..." _VOLUME_IDS=() OLDIFS=${IFS} while read volume_info do IFS=',' set -- $volume_info _VOLUME_ID=$(echo $1 | tr -d '"') _DEVICE=$(echo $2 | tr -d '"') echo ${_VOLUME_ID} _VOLUME_IDS=("${_VOLUME_IDS[@]}" ${_VOLUME_ID}) aws ec2 attach-volume --volume-id ${_VOLUME_ID} --instance-id ${_INSTANCE1_ID} --device ${_DEVICE} done < tmp/volume_info IFS=${OLDIFS} # インスタンスにボリュームがアタッチされるまで待機する aws ec2 wait volume-in-use --volume-ids "${_VOLUME_IDS[@]}" if [ $? -eq 0 ];then echo "ボリュームのアタッチが完了しました. 引続き処理を続行します." else echo "ボリュームのアタッチに失敗しました. 処理を中断します." exit 1 fi

上記の続きをしました所、アタッチする部分で躓きました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

インスタンスIDは${}で囲まなくても良いのでは?
環境変数としてi-xxxxxxxxxxxにインスタンスIDが入っているのであればそのままでいいです。

_INSTANCE_ID="${i-xxxxxxxxxxx}" ↓ _INSTANCE_ID="i-xxxxxxxxxxx"

bashでの文字列比較演算子は=です。==ではありません。

if [ "${_DEVICE}" == "${_ROOT_DEVICE}" ];then ↓ if [ "${_DEVICE}" = "${_ROOT_DEVICE}" ];then

以下は、tmp/snapshot_idsが存在し、かつ2行であることを判定したいのですね?
wcコマンドは標準入力から読み込ませるとファイル名を出力しないので、awkコマンドを省略できます。
また、文字列の比較は=であり、2"2"としましょう。

if [ `-f tmp/snapshot_ids -a $(wc -l tmp/snapshot_ids | awk '{print $1}') == 2` ];then ↓ if [ -f tmp/snapshot_ids -a $(cat tmp/snapshot_ids | wc -l) = "2" ];then

以下追記

数値の判定は-eqです

if [ $? == 0 ]; then echo "スナップショットの作成が完了しました." fi ↓ if [ $? -eq 0 ]; then echo "スナップショットの作成が完了しました." fi

文字列の比較は=です。

if [ "${_RESULT}" == "00" ];then ↓ if [ "${_RESULT}" = "00" ];then

追記19011

if構文エラーについて

以下は構文間違えています。必ずTrueになります。
やりたいことは_RESULT_1と_RESULT_2が共に0であることですか?

if [ _RESULT_1=0,_RESULT_2=0 ];then ↓ if [ "${_RESULT_1}${_RESULT_2}" = "00" ];then

AWS関係なく、まずはシェルのif構文について正確に理解してください。

aws: error: argument --volume-id: expected one argumentについて

--volume-idに複数のパラメータを渡しているのでしょう。
何が渡されているかset xechoなどで確認してください。

Waiter VolumeInUse failed: Max attempts exceededについて

このエラーが出た場合は再度コマンドを実行します。

投稿2019/01/09 01:25

編集2019/01/11 01:14
moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momo2

2019/01/09 13:14 編集

お返事ありがとうございます。 ご指摘頂いた箇所につきまして、エラー解決できました。3-1まで、進めることが出来ました。 ありがとうございます。 その後、スナップショットまでは、作成出来ましたが、また、そこからボリューム作成しようとするとエラーが表示されます。 1*以降の部分、また一部ご指摘頂いた箇所訂正し、コードの追加をし、検証しながら、進めていますが、以下のようなエラーが表示されてしまいます。 処理を続行しますか? [Y/n] y 処理を続行します... スナップショットの作成が完了しました. スナップショットからボリュームを作成します... ボリュームの作成に失敗しました. 最後のここの箇所が悪いと思うのですが・・・分からず。 done < tmp/snapshot_ids _RESULT=${_RESULT_1}${_RESULT_2} if [ "${_RESULT}" == "00" ];then
momo2

2019/01/09 15:22 編集

追記有難うございます。 *2のように修正致しましたが、まだ以下のエラーが出てしまいます。 処理を続行しますか? [Y/n] y 処理を続行します... スナップショットの作成が完了しました. スナップショットからボリュームを作成します... ボリュームの作成に失敗しました. ボリューム自体は作成できているようです。 キー   値 Name  OS1_restore device  /dev/sda1 上記のようになっています。
momo2

2019/01/09 16:45

#_RESULT=${_RESULT_1}${_RESULT_2} #if [ "${_RESULT}" = "00" ];then if [ _RESULT_1=0,_RESULT_2=0 ];then echo "ボリュームを作成しました. 引続き処理を続行します." else echo "ボリュームの作成に失敗しました." fi 上記のように作成しましたら、以下のように成功文が出ました。 処理を続行しますか? [Y/n] y 処理を続行します... スナップショットの作成が完了しました. スナップショットからボリュームを作成します... ボリュームを作成しました. 引続き処理を続行します. コード文が合っているのかは分かりませんが、result1.2共に0であれば成功として処理したつもりです。
moonphase

2019/01/10 00:41

シェルの冒頭で set x して実行すると実行した(評価した)コードが出力されるので、エラーとなっている箇所や変数に想定しているものが設定されているか確認してください。 私のほうでは入力値がわからないので、while read snapshot_idループで_RESULT_1と_RESULT_2に0が設定される条件かどうかについてわかりません。
momo2

2019/01/10 13:20 編集

ありがとうございます。 *3に追記します。 if文で、result1で条件が合致した為、result1のみでよかったのかなと思います。 有難うございます。
momo2

2019/01/10 13:53 編集

その先も進めておりましたが、最後に起動する前のアタッチするところで躓いてしまいました。 *4で記載しました。 この文にあるようにボリュームのIDがおかしいでしょうか? error: argument --volume-id: expected one argument instance1というものは、途中から別途作成したものを使用し、それを停止させる所から使用する。 そのinstance1をデタッチして、事前にスナップショットから作成しておいたボリュームをアタッチさせたいのです。 以下が*4のスクリプトを回した答えになります。 処理を続行しますか? [Y/n] y 処理を続行します... スナップショットの作成が完了しました. スナップショットからボリュームを作成します... ボリュームを作成しました. 引続き処理を続行します. インスタンスを停止します... { "StoppingInstances": [ { "InstanceId": "i-yyy", "CurrentState": { "Code": 64, "Name": "stopping" }, "PreviousState": { "Code": 16, "Name": "running" } } ] } インスタンスの停止まで待機します... インスタンスの停止が完了しました. 引続き処理を続行します. インスタンスからボリュームをデタッチします... { "AttachTime": "2019-01-10T11:42:26.000Z", "InstanceId": "i-yyy", "VolumeId": "vol-zzz", "State": "detaching", "Device": "/dev/sda1" } インスタンスからボリュームをデタッチしました. 引続き処理を続行します. インスタンスに付与するボリュームの情報を取得します... インスタンスに付与するボリュームの情報を取得しました. 引続き処理を続行します. インスタンスにボリュームをアタッチします... usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument --volume-id: expected one argument usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters] To see help text, you can run: aws help aws <command> help aws <command> <subcommand> help aws: error: argument --volume-id: expected one argument Waiter VolumeInUse failed: Max attempts exceeded ボリュームのアタッチに失敗しました. 処理を中断します.
momo2

2019/01/11 02:38

ありがとうございます。 1. if構文エラーについて 以下は構文間違えています。必ずTrueになります。 やりたいことは_RESULT_1と_RESULT_2が共に0であることですか? →いえ、私の間違いです。if文で、if内が合致するならば、else文にはいかないはずなので、if文にあるresult1=0のみで良かったです。 ですが仰る内容で、 if [ "${_RESULT_1}${_RESULT_2}" = "00" ];then こちらはresult1.2のどちらかが0ならば条件合致すると考えていいのでしょうか? 2. aws: error: argument --volume-id: expected one argumentについて --volume-idに複数のパラメータを渡しているのでしょう。 何が渡されているかset xやechoなどで確認してください。 →早速、set xで試しながら確認したところ、tagに入っている情報が上手く入手されてないことがわかり、修正しましたら、上手く最後まで進めました。ありがとうございます。 3. Waiter VolumeInUse failed: Max attempts exceededについて このエラーが出た場合は再度コマンドを実行します。 →分かりました。こちらのエラー文については、無視して進めます。
moonphase

2019/01/11 04:06

_RESULT_1または_RESULT_2が"0"かを判定する(or)は-oです。 if [ "${_RESULT_1}" = "0" -o "${_RESULT_2}" = "0" ];then
momo2

2019/01/11 10:44

有難うございます。 + '[' 0 -eq 0 ']' + _RESULT_1=0 + read snapshot_id + '[' 0 = 0 -o '' = 0 ']' + echo 'ボリュームを作成しました. 引続き処理を続行します.' ボリュームを作成しました. 引続き処理を続行します. 以下のようになり、問題なく動作出来ました。 ありがとうございます!
momo2

2019/01/11 10:57 編集

IFS=',' set -- $volume_info _VOLUME_ID=$(echo $1 | tr -d '"') _DEVICE=$(echo $2 | tr -d '"') echo ${_VOLUME_ID} _VOLUME_IDS=("${_VOLUME_IDS[@]}" ${_VOLUME_ID}) aws ec2 attach-volume --volume-id ${_VOLUME_ID} --instance-id ${_INSTANCE1_ID} --device ${_DEVICE} 一応、最後までは動作出来ました。本当にありがとうございます! それで、すいません、ここの部分について、どのように動作しているのか 完全には分かっておりません。勉強として、教えていただきたいのですが・・・ 1. 私の認識では、ここの部分で全ての_VOLUME_IDの引数を集める。 set -- $volume_info _VOLUME_ID=$(echo $1 | tr -d '"') _DEVICE=$(echo $2 | tr -d '"') echo ${_VOLUME_ID} _VOLUME_IDS=("${_VOLUME_IDS[@]}" ${_VOLUME_ID}) 2. ここの部分で、その集めてきた_VOLUME_IDを_INSTANCE1_IDにアタッチすると認識してます。 aws ec2 attach-volume --volume-id ${_VOLUME_ID} --instance-id ${_INSTANCE1_ID} --device ${_DEVICE} done < tmp/volume_info
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問