Help us understand the problem. What is going on with this article?

JAWS-UG CLI専門支部 #154R S3入門参加 まとめ

S3入門編に参加してみて

JAWS-UG CLI専門支部 #154R S3入門に参加。
S3の操作をAWS CLIを通して学んだ。1時間遅れで参加したけど、なんとか全ての操作をやりきった。
茅場町開催で一度参加したことあるけど、なかなか時間があわずに2回目以降はいけていない。
オンライン開催になってから今のところ毎回参加できているので本当に嬉しい。:relaxed:
運営者の波多野さんありがとうございます!
★JAWS-UG CLI専門支部 #154R S3入門 イベントページ

できるようになったこと

  • S3バケットの構築S3バケットを作成
  • S3オブジェクトの操作(確認、アップロード、ダウンロード、移動、削除) 
  • S3バケットの同期
  • webサイトホスティング
  • 署名付きURLの発行

★教材ページ

S3バケットの構築

aws s3 mb s3://${S3_BUCKET_NAME} --region ${AWS_DEFAULT_REGION}
\${S3_BUCKET_NAME}=バケットネームを指定。一意である必要がある。
\${AWS_DEFAULT_REGION}=バケットを作成するリージョン。東京リージョンは'ap-northeast-1'。

S3オブジェクトの操作

・オブジェクトの確認
aws s3 ls s3://${S3_BUCKET_NAME}/

・オブジェクトのアップロード
aws s3 cp ${FILE_UPLOAD} s3://${S3_BUCKET_NAME}/
\${FILE_UPLOAD}=コピー元を指定

・オブジェクトのダウンロード
aws s3 cp s3://${S3_BUCKET_NAME}/${S3_OBJECT_NAME} ${FILE_DOWNLOAD}
\${S3_BUCKET_NAME}/${S3_OBJECT_NAME}=S3内のオブジェクトを指定。
\${FILE_DOWNLOAD}=ローカルのダウンロード先を指定

・オブジェクトの削除
aws s3 rm s3://${S3_BUCKET_NAME}/${S3_OBJECT_NAME}

・オブジェクトの移動
aws s3 mv s3://${S3_BUCKET_NAME_SOURCE}/${S3_OBJECT_PREFIX_SOURCE} \
s3://${S3_BUCKET_NAME_DESTINATION}/${S3_OBJECT_PREFIX_DESTINATION}

\${S3_BUCKET_NAME_SOURCE}/\${S3_OBJECT_PREFIX_SOURCE}=移動元のオブジェクトを指定
\${S3_BUCKET_NAME_DESTINATION}/\${S3_OBJECT_PREFIX_DESTINATION}=移動先のオブジェクトを指定

・オブジェクトの削除(パス単位)
aws s3 rm --recursive s3://${S3_BUCKET_NAME}/${S3_OBJECT_PREFIX}
recursive指定でパス含めて削除。

S3バケットとの同期

事前にgitリポジトリからローカルにcloneしてデータをアップロードしておく
cd ${DIR_S3_TRANSFER} \
&& aws s3 sync . "s3://${S3_BUCKET_NAME}/" \
--exclude "${S3_SYNC_EXCLUDE}" --acl public-read

exclude ${S3_SYNC_EXCLUDE}=同期の対象から外すファイルを指定。(".git*")
acl public-read =オブジェクトの公開読み取りを許可

仮想ホスティングエンドポイントの取得
S3_BUCKET_ENDPOINT=" \
${S3_BUCKET_NAME}.s3.$( \
\ aws s3api get-bucket-location \
--bucket ${S3_BUCKET_NAME} \
--output text \
).amazonaws.com" \
&& echo ${S3_BUCKET_ENDPOINT}

仮想ホスティングエンドポイントにオブジェクトのパスを追加
S3_OBJECT_NAME='img.jpg'
URL_S3_OBJECT="${S3_BUCKET_ENDPOINT}/${S3_OBJECT_NAME}" \
&& echo ${URL_S3_OBJECT}

\${URL_S3_OBJECT}をブラウザで参照するとオブジェクトのimgファイルを確認できる

S3バケットのWebサイトホスティング設定

Webサイトホスティング
aws s3 website "s3://${S3_BUCKET_NAME}" \
--index-document ${S3_DOC_INDEX} \
--error-document ${S3_DOC_ERROR}

index-document \${S3_DOC_INDEX} 正常表示するページを指定
error-document \${S3_DOC_ERROR} 4XX系のエラーが発生する際に表示するページを指定

エンドポイントを取得
S3_BUCKET_WEBSITE_ENDPOINT=" \
${S3_BUCKET_NAME}.s3-website-$( \
aws s3api get-bucket-location \
--bucket ${S3_BUCKET_NAME} \
--output text \
).amazonaws.com" \
&& echo ${S3_BUCKET_WEBSITE_ENDPOINT}

※リージョンによってエンドポイントの形式が変わるので注意
 昔からあるリージョン:s3-website(バージニア北部や東京)
 新しめのリージョン:s3-website.(ソウルや大阪)
詳細は以下のリンクを
ウェブサイトエンドポイントについて
リージョン別エンドポイント

署名付きURLの発行

aws s3 presign s3://${S3_BUCKET_NAME}/${S3_OBJECT_NAME} \
--expires-in ${S3_PRESIGN_SECONDS}

presign s3://\${S3_BUCKET_NAME}/\${S3_OBJECT_NAME} 署名対象のオブジェクト名を指定
expires-in \${S3_PRESIGN_SECONDS} 署名の有効期限。単位は秒。

Kiyonchu
かけだしAWSエンジニア。ようやくAWS歴1年になります。AWS SAA。 8年ぐらいオンプレインフラエンジニア。 年内にAWS SAPとるぞー。
beex-inc
BeeXではクラウドネイティブアプリ開発、企業の基幹クラウド基盤構築、システム移行、運用保守を行っています。
https://www.beex-inc.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away