私の戦闘力は53万です

awsとgcpについて書きます

AWS S3のオブジェクトを時間指定でパブリック公開する

S3のホスティングを利用している場合で、
オブジェクトを特定時間に公開したいと思うことがありました。
その際、S3のバケットポリシーを利用して公開時間を
設定することが可能でしたので備忘で記事にします。

検証内容

バケットポリシーの時間を更新する
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<bucket_name>/*",
            "Condition": {
                "DateGreaterThan": {
                    "aws:CurrentTime": "2019-10-24T03:00:00Z"
                },
                "DateLessThan": {
                    "aws:CurrentTime": "2019-10-30T15:00:00Z"
                }
            }
        }
    ]
}
 
上記で許可指定した時間内はアクセスが可能なことを確認
date --utc
2019年 10月 24日 木曜日 03:41:37 UTC
 
<!doctype html>
<html class="no-js" lang="">
<head>
  <meta charset="utf-8">
  ....................
  
バケットポリシーの時間を許可外の時間となるよう変更する
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<bucket_name>/*",
            "Condition": {
                "DateGreaterThan": {
                    "aws:CurrentTime": "2019-10-24T04:00:00Z"
                },
                "DateLessThan": {
                    "aws:CurrentTime": "2019-10-30T15:00:00Z"
                }
            }
        }
    ]
}
 
時間外はアクセスが拒否されることを確認
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>8CBC499D293CCE35</RequestId><HostId>yDbZevag/0yexwkf1FZZEsSNrGeh2d0fQFtxnG1dOINeEafDSAWOdgi9CypUybOlJA2ezhNjmMo=</HostId></Error>[ec2-user@ip-192-168-0-212 ~]$
 
誰かの参考になれば幸いです。