ストレージ Wiki
未解決
35 メッセージ
1
848
2021年2月21日 21:00
【ECS解説第7回】s3curlにおけるECS3.5.0.2以降での操作方法の違いについて
皆さん、こんにちは。
2019年にS3curlを使ってECSにS3アクセスできる話をご紹介させていただきました。
【ECS解説第三回】S3curlによるECSの操作について(1/2)、【ECS解説第4回】s3curlによるECSの操作について(2/2) の2回にわたって、s3curlを使ってECSにS3アクセスできる話をご紹介させていただきました。
今回はECS3.5.0.2以降でのs3curlの使用方法に少し変更がありましたので、新しい記事としてお知らせしたいと思います。
S3curlの話をする前に、今年1月にブログにてご紹介したEXF900とともにECS v3.6がリリースされていますが、それに前後して、ECS v3.5.1が最新のGA版としてアナウンスされました。現在、ECSをご採用いただいた場合の推奨コードとなります。
さて、ECS v3.5.1の直前は、ECS3.5.0.2でしたがこのリリースコード以降、S3curlを使用する際に以下のオプションを付与することが必要になりました。
S3curlのコマンドに付与すべき新たなパラメータ: x-amz-date
このヘッダーに付与すべき値は、実行時の[日付]+[時刻]を次の書式で記述し、他のヘッダーと同様にダブルコーテーションで括ります。なお、下記の日時はGMTベースです(日本標準時から-9時間してください)。
“x-amz-date:[yyyymmdd]T[HHMMSS]Z”
<コマンド投入例 (ECS v3.6にて実行)>
$ sudo ./s3curl.pl --debug --id=ns2user -- http://ecs1-1500.ecs.com/bucket2 -H "x-amz-date:20210118T091330Z" | xmllint --format -
s3curl: Found the url: host=ecs1-1500.ecs.com; port=; uri=/bucket2; query=;
s3curl: ordinary endpoint signing case
s3curl: StringToSign='GET\n\n\n\nx-amz-date:20210118T091330Z\n/bucket2'
s3curl: exec curl -v -H 'Authorization: AWS ns2user:NuluXuDM1Vu+IiBXNv9OZBhzBRg=' -L -H 'content-type: ' http://ecs1-1500.ecs.com/bucket2 -H x-amz-date:20210118T091330Z
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to ecs1-1500.ecs.com port 80 (#0)
* Trying 10.6.15.20...
* Connected to ecs1-1500.ecs.com (10.6.15.20) port 80 (#0)
> GET /bucket2 HTTP/1.1
> User-Agent: curl/7.29.0
> Host: ecs1-1500.ecs.com
> Accept: */*
> Authorization: AWS ns2user:NuluXuDM1Vu+IiBXNv9OZBhzBRg=
> x-amz-date:20210118T091330Z
>
< HTTP/1.1 200 OK
< Date: Mon, 18 Jan 2021 09:13:56 GMT
< Server: ViPR/1.0
< x-amz-request-id: c0a80f17:176ecee0f91:7aaf:1
< x-amz-id-2: 7d9bb52a6e0520c24d28c6527d758da468d81cdf02a55df820d6ff45c59cb57c
< x-emc-retention-period: 0
< Content-Type: application/xml
< Transfer-Encoding: chunked
<
{ [data not shown]
100 112k 0 112k 0 0 757k 0 --:--:-- --:--:-- --:--:-- 761k
* Connection #0 to host ecs1-1500.ecs.com left intact
==以下、継続==
x-amz-dateを付けないと以下のように403 forbidden、Access Deniedになってしまいます。
実はECSのアップグレード後、私も最新のData Access Guideを参照して、x-amz-dateの記述を見つけるまで、何が悪いのかわからず、悩みました。どうぞお気を付けください。
$ sudo ./s3curl.pl --debug --id=ns2user -- http://ecs1-1500.ecs.com/bucket2 | xmllint --format -
s3curl: Found the url: host=ecs1-1500.ecs.com; port=; uri=/bucket2; query=;
s3curl: ordinary endpoint signing case
s3curl: StringToSign='GET\n\n\n月, 18 1月 2021 09:29:58 +0000\n/bucket2'
s3curl: exec curl -v -H 'Date: 月, 18 1月 2021 09:29:58 +0000' -H 'Authorization: AWS ns2user:tv10xWfJY3EuZIGii7q9Rmx5eDc=' -L -H 'content-type: ' http://ecs1-1500.ecs.com/bucket2
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* About to connect() to ecs1-1500.ecs.com port 80 (#0)
* Trying 10.6.15.20...
* Connected to ecs1-1500.ecs.com (10.6.15.20) port 80 (#0)
> GET /bucket2 HTTP/1.1
> User-Agent: curl/7.29.0
> Host: ecs1-1500.ecs.com
> Accept: */*
> Date: 月, 18 1月 2021 09:29:58 +0000
> Authorization: AWS ns2user:tv10xWfJY3EuZIGii7q9Rmx5eDc=
>
< HTTP/1.1 403 Forbidden
< Date: Mon, 18 Jan 2021 09:29:58 GMT
< x-amz-id-2:
< Server: ViPR/1.0
< x-amz-request-id: c0a80f15:176ecbf4f3e:7d8e:1
< Content-Type: application/xml
< Content-Length: 122
<
{ [data not shown]
100 122 100 122 0 0 15897 0 --:--:-- --:--:-- --:--:-- 17428
* Connection #0 to host ecs1-1500.ecs.com left intact
AccessDenied
このエラーはTestDrive(現在V3.6.1)でも同様に発生します。どうぞご注意ください。
今回はここまでとして、次回、ECS v3.5の新機能などをご紹介したいと思います。
最後までお付き合いいただきありがとうございました。しばらく更新しておりませんでしたので、アップデートを引き続き行っていきたいと思いますので、またお目にかかりたいと思います。どうぞご期待ください。
杉本 直之
デル・テクノロジーズ株式会社
UDS事業本部
レスポンス(0)
デル サポート リソース