質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

解決済

【Amazon S3】署名付きURLでのアップロードをするとAccess Deniedになる

aaaaakiyama
aaaaakiyama

総合スコア0

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1回答

0評価

0クリップ

39閲覧

投稿2018/12/18 08:35

前提・実現したいこと

Amazon S3に署名付きURLを使ってファイルのアップロードがしたいです。
アップロードしたファイルは、アクセス不可の状態にしたいのです。

発生している問題・エラーメッセージ

署名付きURLの生成はできたのですが、Curlを用いたアップロードで、「Access Denied」が出てしまいます。
IAMやバケットサイドで、何か設定が必要なのでしょうか。
以下、curlを実行した際の出力です。

Trying [ip_address]... * TCP_NODELAY set * Connected to [my_bucket_name].s3.amazonaws.com [ip address] port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs * TLSv1.2 (OUT), TLS header, Certificate Status (22): * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / *****-***-******-***-****** * ALPN, server did not agree to a protocol * Server certificate: * subject: C=US; ST=Washington; L=Seattle; O=Amazon.com Inc.; CN=*.s3.amazonaws.com * start date: Nov 7 00:00:00 2018 GMT * expire date: Feb 7 12:00:00 2020 GMT * subjectAltName: host "[my-bucket_name].s3.amazonaws.com" matched cert's "*.s3.amazonaws.com" * issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=DigiCert Baltimore CA-2 G2 * SSL certificate verify ok. > PUT /test.txt?AWSAccessKeyId=[my_access_key_id] HTTP/1.1 > Host: [my_bucket_name].s3.amazonaws.com > User-Agent: curl/7.52.1 > Accept: */* > Content-Length: 6 > Expect: 100-continue > < HTTP/1.1 403 Forbidden HTTP/1.1 403 Forbidden < x-amz-request-id: [***] x-amz-request-id: [***] < x-amz-id-2: [***] x-amz-id-2: [***] < Content-Type: application/xml Content-Type: application/xml < Transfer-Encoding: chunked Transfer-Encoding: chunked < Date: Tue, 18 Dec 2018 08:10:23 GMT Date: Tue, 18 Dec 2018 08:10:23 GMT < Connection: close Connection: close < Server: AmazonS3 Server: AmazonS3 < <?xml version="1.0" encoding="UTF-8"?> * Curl_http_done: called premature == 0 * Closing connection 0 * TLSv1.2 (OUT), TLS alert, Client hello (1): <Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>[***]</RequestId><HostId>[***]</HostId></Error>

該当のソースコード

下記の投稿を参考にさせていただき、実行しました。
https://dev.classmethod.jp/cloud/aws/generate-pre-signed-url-for-s3-with-boto3/

python

import boto3 BUCKET = '[my-bucket_name]' KEY = test.txt s3 = boto3.client('s3') print s3.generate_presigned_url( ClientMethod = 'put_object', Params = {'Bucket' : BUCKET, 'Key' : KEY}, ExpiresIn = 3600, HttpMethod = 'PUT')

sh

$ curl -v -D - -X PUT --upload-file test.txt [生成された署名付きURL]

試したこと

・ルートユーザーで上記の実行 →Access Denied
・ルートユーザーにS3FullAccess付与 →Access Denied
・AWS CLIで署名付きURL生成、ローカルからアップロード →Access Denied
・AWS CLIで署名付きURL生成、ローカルでダウンロード →OK
・AWS Lambdaで署名付きURL生成、ローカルからcurl実行 →Access Denied
・バケットはパブリックアクセスを許可していない状態にしています。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。