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

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

新規登録して質問してみよう
ただいま回答率
85.50%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

AWS(Amazon Web Services)

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

Q&A

2回答

2232閲覧

S3にsyncする際のエラー処理について aws

iii

総合スコア29

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2019/01/14 02:13

シェルスクリプトで、サーバーのファイルをS3にコピーするプログラムを作成しています。

以下のコードを書いてみたのですが、
サーバーのディレクトリとS3のディレクトリをわざと間違えてみてもエラー処理されません。。。

aws s3 sync サーバーのファイルのディレクトリ S3のディレクトリ
if [ $? -ne 0 ]; then
echo "error"
fi

どのように書けば、正しくエラー処理されるようになるのでしょうか。

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

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

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

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

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

guest

回答2

0

まず、Amazon S3に存在するのは、リージョンでユニークなバケットに対するメタデータオブジェクトです。
S3バケットのフォルダはLinuxでいうところのディレクトリとは違います。
Amazon S3 の概念 を参照

あくまで人間がわかりやすいようにフォルダとファイルで見えていますが、
AWSからすれば、すべてバケットの中にあるオブジェクトになります。
区別の方法は、オブジェクトの最後に"/"があるかないかです。

つまり誤って"/"を文字列につけてしまうと、AWS側がフォルダとみなして勝手にフォルダが生成されます。


以下は、ローカルディレクトリとS3バケットのフォルダがテレコではなく
ローカルディレクトリの名前を間違ってしまったとか、
S3バケットのフォルダ名が間違ってしまった場合の処理が聞きたいのだと推測して回答します。

aws s3 sync は、ディレクトリとS3バケットないし、オブジェクト配下を同期させますが
基本的にAWSCLIはAWS側にジョブを投げるような感じと思ってください。

AMI作成コマンドなどEXITステータスで確認できないコマンドなども存在するため、
EXITステータスは信用しないように注意してください。

したがって、シェルでは、

  1. サーバサイドのファイルディレクトリが存在するか事前に確認する。
  2. 入力されたディレクトリが間違っていれば、シェルでエラー実装する。
  3. 正常だったらaws s3 sync コマンドを投げっぱなしにする。(いつか同期が完了する)

のようにします。

ちなみにaws s3 syncaws s3 cpaws s3 lsで代用することも可能です。

投稿2019/01/14 14:43

lazhuward

総合スコア1294

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

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

0

サーバーのディレクトリとS3のディレクトリをわざと間違えてみてもエラー処理されません。。。

はい、正常に処理されるべきものなので、逆にしただけではエラーにはなりません。aws s3 syncは、S3⇔ローカルのどちら向きでも同期可能です(リファレンス)。

投稿2019/01/14 02:17

編集2019/01/14 02:20
maisumakun

総合スコア145121

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

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

iii

2019/01/14 02:21

ご回答ありがとうございます。 ディレクトリを間違えた際にエラー処理されるようにするためには どうすればよいでしょうか。
maisumakun

2019/01/14 02:23

どちら向きでも動作させられる以上、「意図してその向きにした」のか「間違えた」のかを判別するには、まずその条件を考えて手動で検出する必要があります(コマンドとしてはどちら向きでも「入力したとおり」に動作できますので、エラーにはなりません)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問