* Web API

[FIG(short list)[ [3] 
- [CODE[AWS4-HMAC-SHA256]]
]FIG]

[4] [[XML]] を返します。 [[JSON]] にする方法はないようです。

;; [5] なお、[[非整形式XML]]になることもある模様。

[6] [[ファイル]]の保存と取得だけで複雑なことをしないなら、実は返ってくる [[XML]]
を見なくても [[HTTP]] だけで処理できます。 (エラー処理を考えると結局 [[XML]]
の中身を見ないといけないのでは、と思ってしまいますが、あまり複雑な処理をさせないただのファイルストレージとして使うなら、
エラーが返ってくるのは本当に想定外の異常の場合だけなので、そのままログファイルに流せばよく、
プログラム的には [[XML]] の中身を見なくて済みます。)

* Web ブラウザーからの直接アップロード

[18] [[Webブラウザー]]の[[利用者]]の権限で実行可能な操作を記述する [[JSON]]
の書き方 >>16

[16] [CITE[Creating a POST Policy - Amazon Simple Storage Service]]
([TIME[2017-10-13 11:10:46 +09:00]])
<http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html>

[19] [[フォーム]]の例 >>17

[17] [CITE[Examples: Browser-Based Upload using HTTP POST (Using AWS Signature Version 4) - Amazon Simple Storage Service]]
([TIME[2017-10-13 11:10:46 +09:00]])
<http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html>

[20] ここで使う署名の計算は [CODE[AWS4]]。 [[Web API]] の[[要求]]送信時に使うものと同じだけど、
署名する対象が違う。

-*-*-

[21] 回数制限はないので、有効期限まで何度でも POST できます。

* [CODE(URI)@en[s3:]] URL scheme

[FIG(quote)[
[FIGCAPTION[
[1] [CITE@en[Feed exports — Scrapy 0.24.5 documentation]]
([TIME[2015-02-26 06:37:57 +09:00]] 版)
<http://doc.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-storage-s3>
]FIGCAPTION]

> The feeds are stored on Amazon S3.
> URI scheme: s3
> Example URIs:
> s3://mybucket/path/to/export.csv
> s3://aws_key:aws_secret@mybucket/path/to/export.csv

]FIG]

[26] 
[CITE@en[nix help-stores - Nix Reference Manual]], [TIME[2026-03-01T03:13:57.000Z]] <https://nix.dev/manual/nix/2.24/command-ref/new-cli/nix3-help-stores>


* メモ

[2] [CITE[Amazon S3 REST API Introduction - Amazon Simple Storage Service]]
([TIME[2017-02-11 04:52:51 +09:00]])
<https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html>

[FIG(quote)[
[FIGCAPTION[
[7] [CITE@en[BashtonLtd/apt-transport-s3: S3 transport for APT]]
( ([TIME[2017-05-29 01:35:21 +09:00]]))
<https://github.com/BashtonLtd/apt-transport-s3>
]FIGCAPTION]

> The bucket repo should be specified using an s3:// prefix, for example:
> deb s3://aptbucketname.s3.amazonaws.com/repo/ trusty main contrib non-free

]FIG]


[8] [CITE[Amazon S3における「フォルダ」という幻想をぶち壊し、その実体を明らかにする | Developers.IO]]
([TIME[2017-10-12 18:21:03 +09:00]])
<https://dev.classmethod.jp/cloud/aws/amazon-s3-folders/>

[9] [CITE[PUT Object - Amazon Simple Storage Service]]
([TIME[2017-10-12 17:27:50 +09:00]])
<http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html>

[10] [CITE@ja[Amazon S3 専用のアカウントを作ってみよう (フェンリル | デベロッパーズブログ)]]
([TIME[2017-10-13 14:11:10 +09:00]])
<https://blog.fenrir-inc.com/jp/2013/01/amazon-s3-iam.html>

[11] [CITE[Amazon S3 バケットの使用 - Amazon Simple Storage Service]]
([TIME[2017-10-12 17:27:57 +09:00]])
<http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/UsingBucket.html>

[12] [CITE[Website Endpoints - Amazon Simple Storage Service]]
([TIME[2017-10-12 17:27:50 +09:00]])
<http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html>

[13] [[S3]] で ([[S3]] だけで) [[独自ドメイン]]を使う場合は、
[[S3]] バケット名を[[ドメイン名]]にする必要があります。

[14] ただし [[独自ドメイン]]の[[TLS証明書]]が提供されるわけではありませんし、
設定する方法も用意されていません。しかも[[ワイルドカード証明書]]は深い階層まで対応していないので、
[CODE[foo.test.s3.amazonaws.com]] のような名前でのアクセスもクライアント側で [[service identity]]
エラーになってしまいます。
クライアント側のエラーを回避したいときは [CODE[https://s3.amazonaws.com/foo.test/]]
のような形式の [[URL]] を使うと良いです。

[15] [CITE[バケットポリシーの例 - Amazon Simple Storage Service]]
([TIME[2017-10-13 11:11:43 +09:00]])
<http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/example-bucket-policies.html>



[22] [CITE[Amazon S3 イベント通知の設定 - Amazon Simple Storage Service]]
([TIME[2017-10-13 11:11:43 +09:00]])
<http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/NotificationHowTo.html>

[23] [[応答]]の [CODE[x-amz-version-id]] の値を[[要求URL]]
の [[query]] の [CODE[versionId]] に指定すると、その版が返ってきます。
先頭一致でチェックしているようです。
[TIME[2017-11-17T06:04:55.800Z]]

[24] [CITE@en[aws s3 ls - find files by modified date? · Issue #1104 · aws/aws-cli]]
([TIME[2019-11-03 16:56:54 +09:00]])
<https://github.com/aws/aws-cli/issues/1104>

[25] 
[CITE@en[GitHub - s3tools/s3cmd: Official s3cmd repo -- Command line tool for managing Amazon S3 and CloudFront services]], [TIME[2023-07-16T11:21:13.000Z]] <https://github.com/s3tools/s3cmd>
