LoginSignup
2
2

More than 1 year has passed since last update.

【実務6ヶ月】【AWS】期限を指定してS3からオブジェクトを取得する方法

Last updated at Posted at 2022-10-30

EC2からもDCからもS3にアクセスする方法を備忘として記録しておきます。

プライベートからS3にアクセスする方法

プライベートサブネットにEC2を設置し、S3を作成します。次にEC2を設置しているVPC内にゲートウェイ型のエンドポイントを作成します。

スクリーンショット 2022-10-30 11.32.33.png

[VPC]-[エンドポイント]-[サービス]
エンドポイントの検索欄に「s3」と入力します。画面右にスライドさせると「タイプ」の一覧に「Gatteway」が表示されている「com.amazonaws.ap-northeast-1.s3」を選択します。

スクリーンショット 2022-10-30 11.42.46.png

エンドポイントを作成するVPCを選択しどのルートテーブルを使用してS3にアクセスさせるかを選択します。

スクリーンショット 2022-10-30 13.53.20.png

スクリーンショット 2022-10-30 12.15.21.png

ルートテーブルにエンドポイントが追加されているか確認します。

これでプライベートにあるEC2がゲートウェイ型エンドポイントを通ってS3にアクセスできるようになりました。

専用のIAMのユーザーを作成したり、バケットポリシーでアクセスを制限します。
こちらに関しては後日、書きたいと思います。(方法は参照記事にて)

期限を指定してオブジェクトを取得する方法

一時的にアクセスを許可して、指定した人にアクセスをさせる場合は署名付きURLを使用します。

一時的にアクセスを許可して、指定した人にオブジェクトを取得させる場合は署名付きURLを使用します。

スクリーンショット 2022-10-30 13.05.42.png
[Amazon S3]-[バケット]-[任意のバケット-チェックを入れる]-[アクション]-[署名付きURLで共有]

スクリーンショット 2022-10-30 13.07.28.png

そうすると時間を指定することができます。

日数で指定することはできないのか・・

日数単位で指定したい場合はAWSCLIを使用します。

-AWS CLI コマンド リファレンス S3 署名する より抜粋-

aws s3 presign s3://DOC-EXAMPLE-BUCKET/test2.txt \
    -- 有効期限 604800

有効期限 604800!?
なんのことかと思いましたがこれ秒数だったんですね、、

・7日間の場合
 60秒×60分=3600秒
 3600秒×24時間=86,400秒
 86,400秒×7日=604,800秒

いやいや秒数でやると計算も面倒だし、日にちを指定できないかと調べてみるとありました。

-Amazon S3 署名済み URLAWS SDK for PHPバージョン 3から抜粋-

//Creating a presigned URL
$cmd = $s3Client->getCommand('GetObject', [
    'Bucket' => 'my-bucket',
    'Key' => 'testKey'
]);

$request = $s3Client->createPresignedRequest($cmd, '+20 minutes');

// Get the actual presigned-url
$presignedUrl = (string)$request->getUri();

サポートに問い合わせてみると
($cmd, '+20 minutes')の「minutes」を「day」もしくは「days」にすることで日数で指定できると回答が返ってきました。

1日なら1day、2日なら2days

他にもこんな記事書いています!

参照記事

【AWS】S3 バケットへのインターネット経由でのセキュアなリモートアクセス設定【バケットポリシー】
https://go-journey.club/archives/13053#インターネット経由でアクセスしてくる場合のセキュアな設定

【ゲートウェイ VPC エンドポイント】EC2からプライベート経路でS3などのAWSサービスへアクセスする
https://blog.serverworks.co.jp/2022/07/08/122037#ゲートウェイ-VPC-エンドポイントの作成今回選んだタイプ

AWS CLI コマンド リファレンス
https://docs.aws.amazon.com/ja_jp/cli/latest/reference/s3/presign.html

Amazon S3署名済みURLAWSSDK for PHPバージョン3
https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/s3-presigned-url.html

2
2
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
2