AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Cloud Shell」を利用して「Amazon S3」の署名付きURLを発行する方法を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、2020年12月16日にリリースされた「AWS Cloud Shell」というコンソール上で、「AWS Command Line Interface(CLI)」を含むシェルスクリプトを実行します。また、AWS Cloud Shellを使って「Amazon S3」の署名付きURLを発行してみます。
AWS Cloud Shellは、コンソール上でシェルの実行環境を操作できるサービスです。あらかじめAWS CLIがインストールされているので、AWS Cloud Shell上でAWS CLIを実行ができます。
これまで、AWS CLIを実行するには作業用に「Amazon EC2」を立ち上げ、ローカルから操作する必要がありました。しかし前者では作業用のEC2を停止、終了しなければなりませんし、後者ではアクセスキーを用意しなければならず、可能であれば避けたい状態でした。
AWS Cloud ShellはAWSが裏側でEC2を起動、管理してくれます。そのEC2上でAWS CLIを実行できるので、面倒なことを考えずに済むようになります。
※2020年12月の記事執筆時点では日本語が用意されていないので、下記のリリースノートを参照するといいかもしれません。
AWS Cloud Shellは「各リージョンで最大10個のシェルを同時に無料で使用できます」とのことなので、ほぼ無料で利用できます。よく使うサービスになりそうなので、これは大変助かります。
AWS Cloud Shellを使うための手順を紹介します。
1.「AWSマネジメントコンソール」を開いて、画面右上にあるAWS Cloud Shellのアイコンをクリックします。アイコンは図1の赤枠で囲ってあるものです。
2.起動時には図2の通りガイドが表示されるので、右下の「Close」をクリックします。ガイドを開く必要がない場合は左下の「Do not show again」にチェックを入れた上で閉じてください。
3.図3の通りAWS Cloud Shellが立ち上がれば、操作可能になります。
4.試しに、「aws --version」を実行してみると、確かにコマンドが実行され結果が返ってくることが分かります(図4)。返ってきた結果を見ると、確かにAWS CLIがインストールされているようです。
以上のように、面倒な作業が必要なくシェル環境を立ち上げることができました。これまでのことを考えるとこれはとても便利なサービスだと感じます。
AWS Cloud Shellにはオプションも幾つか用意されています。
右上の「Actions」から図5の通り、タブレイアウトなどを設定できます。またファイルのアップロードやダウンロード、シェルの再起動も行えます。
また、右上の歯車アイコンから「設定」(Preferences)を行えます(図6)。例えば、フォントサイズの変更などが可能です。
AWS Cloud Shellの使い方が分かったところで、試しに「Amazon S3」の署名付きURLを発行してみます。
署名付きURLは、URLを知っている人がS3にダウンロードしたり、アップロードしたりするための、一時的に有効なURLです(詳細)。
署名付きURLの発行はAWS CLIからも行えるので、AWS Cloud Shellを利用して署名付きURLを発行してみましょう。
1.ログインしている「AWS Identity and Access Management(IAM)」ユーザーのIAMポリシーを確認します。AWS Cloud Shellを利用するための「AWSCloudShellFullAccess」ポリシーが有効になっていることに注意してください。
また、今回はS3の操作もするので、S3に対するポリシーも必要です。
2.事前にS3にテスト用のファイルをアップロードしておきます。テスト用に適当なバケットを作成し、適当な画像をサンプルとしてアップロードしました。
3.アップロードできているかどうかを確認しましょう。AWS Cloud Shellを開いて下記コマンドを実行します。
aws s3 ls s3://<バケット名>
4.バケットに保存されているオブジェクトの一覧が表示されるのでアップロードできているか確認しましょう(図7)。
5.確認できたところで署名付きURLを発行します。AWS Cloud Shell上で下記コマンドを実行します。<S3Uri>に事前に用意したオブジェクトのリソースURLを挿入してください。
aws s3 presign <S3Uri> --expires-in 60
※「--expires-in 60」でURLの有効期限を設定できます。数字部分に有効期限を秒数で挿入してください。ここでは60秒としています。
6.実行すると、署名付きURLが発行されるので、そのURLにアクセスすると、オブジェクトをダウンロードできます。
以上のように、AWS Cloud Shell上からCLIを利用してS3を操作できました。筆者は同様の作業を何回かしているのですが、必要な頻度が少なくEC2を都度立てるのも面倒だったので、非常に助かっています。
2020年12月の記事執筆時現在、AWS Cloud Shellから「プライベート VPC サブネット」内のリソースに接続できません。近日中に対応予定とのことなので、もうしばらく待つ必要がありそうです。
今回は、最近公開されたばかりのAWS Cloud Shellを触ってみました。これまで面倒だった作業をコンソール上から直接実行できるようになるので非常に便利なサービスだと思います。
本稿では、AWS CLIの操作を試してみましたが、種々パッケージがあらかじめインストールされているようなので、できることの幅は広そうです。ご自身の定常業務を見直して、AWS Cloud Shellを取り入れることができるかどうか、ぜひ検討してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.