LoginSignup
2
0

More than 1 year has passed since last update.

【AWS】署名付き URL を使用した S3 オブジェクトの共有を試しました

Posted at

はじめに

基本的に S3 に保存しているオブジェクトはプライベートアクセスとなっており、所有者からしかアクセスできません。ただ、プライベートアクセスにもかかわらず、署名付き URL を発行することで、他者と共有することができます。

以下公式サイト上の説明を引用します。

デフォルトでは、すべての S3 オブジェクトがプライベートです。オブジェクトの所有者のみがそれらにアクセスする許可を持ちます。ただし、オブジェクトの所有者はオプションで他ユーザーとオブジェクトを共有することができます。その場合は、署名付き URL を作成し、独自のセキュリティ証明書を使用して、オブジェクトをダウンロードするための期限付きの許可を相手に付与します。

本記事は、 EC2 から S3 バケットを作成し、そこにオブジェクトを置いて、署名付きURLを発行してアクセス動作を実現します。
EC2 の OS は Amazon Linux 2

1.EC2用IAMロールの作成と付与

EC2用のIAMロールに、以下のポリシーを付与してください。
AmazonS3FullAccess
image.png

上記作成したロールを、EC2 に付与します。
image.png

2.S3バケットの作成とオブジェクトのコピー

S3バケットの作成

$ aws s3 mb s3://hogehogebucket666666666
make_bucket: hogehogebucket666666666

テスト用ファイルの作成

$ echo "Hello World" > hello.txt
$ ls
hello.txt

テストファイルをS3へコピー

$ aws s3 cp hello.txt s3://hogehogebucket666666666
upload: ./hello.txt to s3://hogehogebucket666666666/hello.txt

S3側にファイルがコピーされたことを確認

$ aws s3 ls s3://hogehogebucket666666666
2022-05-12 08:08:31         12 hello.txt

3.署名付きURLを発行前にオブジェクトURLをアクセス確認

上記で作成されたS3に、当オブジェクトのURLを叩くと、
image.png
アクセス不可であることは確認できました。
こちらは想定通りの動きです。
署名付きURL発行前に、S3バケットに置いてあるオブジェクトは、
プライベートアクセスしか許容できていないため、
直接インターネットからはアクセスできません。
image.png

4.署名付きURLを発行

以下のコマンドを叩くと、署名付きURLは発行することになります。
--expires-inオプションを指定すると、URLの有効期限を設定することができます。
今回は300秒で設定しておきました。
--expires-inオプションを付けないと、デフォルト3600秒の有効期限となります。
一方で、指定すると、最大604800秒まで定義することができます。

--expires-in (integer) Number of seconds until the pre-signed URL expires. Default is 3600 seconds. Maximum is 604800 seconds.

$ aws s3 presign s3://hogehogebucket666666666/hello.txt --expires-in 300

以下は実際署名付きURLを発行してみました。

$ aws s3 presign s3://hogehogebucket666666666/hello.txt --expires-in 300
https://hogehogebucket666666666.s3.amazonaws.com/hello.txt?AWSAccessKeyId=XXXXXXXXXXXXXXXXXX&Expires=XXXXXXXXXXX&x-amz-security-token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

上記発行した非常に長いURLを叩くと、アクセスできることが確認できました。
image.png

5分後再度アクセスすると、アクセスがDenyに変更されていることも確認できました。
image.png

参考資料

1.署名付き URL を使用したオブジェクトの共有

2.AWS CLI Command Reference

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0