AWS S3のオブジェクトを時間指定でパブリック公開する
S3のホスティングを利用している場合で、
オブジェクトを特定時間に公開したいと思うことがありました。
その際、S3のバケットポリシーを利用して公開時間を
設定することが可能でしたので備忘で記事にします。
検証内容
バケットポリシーの時間を更新する
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"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",
"Condition": {
"DateGreaterThan": {
"aws:CurrentTime": "2019-10-24T04:00:00Z"
},
"DateLessThan": {
"aws:CurrentTime": "2019-10-30T15:00:00Z"
}
}
}
]
}
時間外はアクセスが拒否されることを確認
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>8CBC499D293CCE35</RequestId><HostId>yDbZevag/0yexwkf1FZZEsSNrGeh2d0fQFtxnG1dOINeEafDSAWOdgi9CypUybOlJA2ezhNjmMo=</HostId></Error>[ec2-user@ip-192-168-0-212 ~]$
誰かの参考になれば幸いです。