AWSを使ってみた!【署名付URLの作成】
AWS(Amazon Web Service)を用いて署名付きURLを作成したときの手順です。
AWS初心者な人が書いているので、自己責任でお願いいたします。。。m(_ _)m
<今回用いたAWSのサービス>
- IAM(Identity and Access Management):AWS リソースへのアクセスを安全に制御するためのウェブサービス。ユーザーやグループの作成やアクセス権限の付与として使えます。
- EC2(Elastic Compute Cloud):安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービス。インスタンスを作成し、様々なサービス(今回はS3)を管理するツールとして使えます。
- S3(Simple Storage Service):どこからの、どのような量のデータでも保存と取得が可能なオブジェクトストレージ。データの置き場所として利用できます。
【手順】
〜大まかな流れ〜
1、ユーザの作成
2、インスタンス(仮想サーバ)の作成
3、署名付きURLの作成
下準備:AWSにアカウントを登録しておきます。この時のアカウントが管理者(ルートアカウント)になります。最初のユーザー/グループの追加や権限の付与はこのアカウントから行います。
- ユーザーの登録
この手順でアクセスキーIDとシークレットアクセスキーIDを取得します。- コンソールへログインします。以下の画面がAWSのコンソール画面になります。
- ヘッダーの「サービス」を選択するとサービス一覧が表示されるので「IAM」を選択します。
- 以下のIAMのコンソールが表示されたら左の欄から「ユーザー」を選択し、その後「ユーザーの追加」を選択します。
- ここで、新規に作成するユーザー名(任意)を入力し、「プログラムによるアクセス」にチェックを入れ、「次のステップ:アクセス権限」を選択します。
- 「既存のポリシーを直接アタッチ」を選択し、S3を制御(バケットの作成等)を行うために「AmazonS3FullAccess」にチェックを入れる。「S3」で検索をかけると見つけやすいです。その後、「次のステップ:確認」を選択します。
- 以下のようになっているかを確認し、「ユーザーの作成」を選択します。
- アクセスキーIDとシークレットアクセスキーの情報を保存しておくために「.cvsのダウンロード」を選択し、CVSファイルをダウンロードしておきます。これでS3を制御管理するユーザの作成が完了しました。
- コンソールへログインします。以下の画面がAWSのコンソール画面になります。
- インスタンスの作成
- ユーザーを作成したら、アカウントをそのまま(管理者のまま)でユーザの作成と同じ手順でサービス一覧から「EC2」を選択します。すると、以下の画面になります。
- 「インスタンスの作成」を選択すると、以下の選択メニューになるので、今回は無料対象枠の「Amazon Linux 2 AMI (HVM), SSD Volume Type」を選択します。(ここで、「Amazon Linux」以外を選択しても良いですが、今後利用するコマンドを他のOSで利用するにはインストールが必要になるかもしれません。)
- ステップ2[インスタンスタイプの選択]〜5[タグの追加]まではデフォルトで設定を行いましたが、用途に合わせて変更すると良いです。
- 次にセキュリティグループの設定を行います。新規のセキュリティグループを作成するを選択し、セキュリティグループ名を入力します。
SSHでログインするので、SSHでログインできるようにしておきます。(ここでソースをマイIPにすると、現在アクセスしているグローバルIPが自動で設定されます。)これによって自身のIPからのみSSHでログインできるようになります。 - (オプション:後にWEBサーバとしてこのインスタンスを使う場合のためにルールを追加しておく)続けて、「ルールの追加」を選択し、「タイプ:HTTP」を選択する。下記画面のようにHTTPのルールが追加されていることを確認し、「確認と作成」を選択します。
- インスタンスの内容が設定どおりであることを確認し、「作成」を選択すると、以下のキーペアについてのウィンドウが出てきます。ここで、プルダウンメニューで「新しいキーペアの作成」を選択し、キーペア名(任意)を入力し、キーペアのダウンロードを行います。その後「インスタンスの作成」を選択します。
- 以下画面が表示されたら、「インスタンスの表示」を選択し、インスタンスの状態を確かめます。インスタンスが正常に起動すると完了です。
- ユーザーを作成したら、アカウントをそのまま(管理者のまま)でユーザの作成と同じ手順でサービス一覧から「EC2」を選択します。すると、以下の画面になります。
- バケットの作成
- 先程作成したインスタンスを選択し、「IPv4 パブリック IP」を確認(コピー)します。
- 自分のPC(私のPCはCentOS7です)のターミナルを起動し、インスタンス作成時にダウンロードしたキーペアが置いている場所(例:Downloads)に移動し、キーペアのパーミッションを「r--------」に変更します。$cd {キーペアが置いている場所へのパス}
$chmod 400 {キーペア} - 先程のアドレスにSSHでログインします。この時、ユーザー名はec2-userとし、キーペアを指定します。$ssh ec2-user@{IPv4 パブリック IP} -i {キーペア}
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
ECDSA key fingerprint is MD5:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.__| __|_ )
_| ( / Amazon Linux 2 AMI
___|\___|___|https://aws.amazon.com/amazon-linux-2/
2 package(s) needed for security, out of 9 available
Run "sudo yum update" to apply all updates.
$ - インスタンスに無事ログインできましたら、AWS コマンドラインインターフェイス(CLI)を使うための初期設定を行います。AWSにアクセスするには認証情報が必要となるため、ユーザー登録のときに作成したアクセスキー/シークレットキーを設定する必要があります。以下で設定ができます。$ aws configure
AWS Access Key ID [None]: {アクセスキーID}
AWS Secret Access Key [None]:{シークレットキーID}
Default region name [None]: ap-northeast-1 ←リージョンがTokyoであることを示しています。
Default output format [None]: text ←コマンドの出力の表示形式を設定します(table,json,textから選べます)
$ - 上記設定が完了すると、S3にデータをアップロードするためのバケットを作成します。$ aws s3 mb s3://xxxxx-bucket ←例)xxxxx-bucketという名のバケットの作成
make_bucket: xxxxx-bucket
$ aws s3 ls
2018-09-25 07:33:43 xxxxx-bucket ←バケットが作成されているか確認
※ちなみに$ aws s3 mb s3://demo-bucket
make_bucket failed: s3://demo-bucket An error occurred (BucketAlreadyExists) when calling the CreateBucket operation: The requested bucket name is not available. The bucket namespace is shared by all users of the system. Please select a different name and try again.と出力されたときは既にdemo-bucketという名前のバケットが他人に使われていることを示しています。
- ここで0バイトのテスト用ファイルを作成し、xxxxx-bucket にアップロードします。$ touch test-file ←テスト用ファイルの作成
$ aws s3 cp test-file s3://xxxxx-bucket ←xxxxx-bucket にアップロード
upload: ./test-file to s3://xxxxx-bucket/test-file
$ aws s3 ls s3://xxxxx-bucket ←xxxxx-bucket にtest-fileがアップロードされているか確認
2018-09-25 07:40:53 0 test-file
$ - 署名付きURL(有効期限:300秒(5分))を作成します。実行結果として表示されたURLが署名付きURLであり、5分間アクセス可能となります。$ aws s3 presign s3://xxxxx-bucket/test-file --expires-in 300
https://xxxxx-bucket.s3.amazonaws.com/test-file?AWSAccessKeyId=xxxxxxxxx...
$
- 先程作成したインスタンスを選択し、「IPv4 パブリック IP」を確認(コピー)します。
以上が署名付きURLの作成手順でした。