S3プライベートストレージ

🚧

S3プライベートストレージをご利用の際には、事前にAnnofabサポート窓口への問い合わせが必要です。
お問い合わせ方法などの詳細は、下記の「事前作業 (Annofabサポート窓口へお問い合わせ)」をご覧ください。

📘

AWSのスクリーンショットは2023年6月に撮影したものです。

S3プライベートストレージを設定するための作業手順について説明します。

S3プライベートストレージとは

S3プライベートストレージは、お客様のAmazon S3に格納されているデータをAnnofabと連携させる機能です。S3プライベートストレージを使うことで、Annofabストレージにデータをアップロードすることなく、お客様管理下のAWS S3に格納されているデータを入力データまたは補助情報として利用することができます。

S3プライベートストレージの全体像

S3プライベートストレージの全体像

事前に、お客様のS3バケットを読み取ることができるIAM Roleを用意する必要があります。
WebブラウザがAnnofabに対してS3バケットへの参照を要求すると、Annofabは前述のIAM RoleへのAssumeRoleを行い、S3バケットへのPre-Signed URLを発行します。Webブラウザは発行されたPre-Signed URLにアクセスして、S3バケットに格納されているデータを参照します。
また、Annofabはファイルの存在確認やメタデータ(画像サイズや動画長さ)の取得のために、AssumeRoleおよびAPIへのアクセスを行います。

前提条件

  • S3にデータが存在する(以降、データが配置されているバケット名をYOUR-BUCKETとして説明します)
  • お客様のAmazon S3から入力データを作成するAnnofabプロジェクトを作成済みである

事前作業 (Annofabサポート窓口へのお問い合わせ)

S3プライベートストレージを利用するには、事前に問い合わせが必要です。Annofabの問い合わせフォームから、S3プライベートストレージの利用を希望する旨の内容でお問い合わせください。

S3プライベートストレージを利用するにあたり、Annofabサポート窓口による事前設定が必要なため、利用を希望するAnnofab組織についてもあわせてお伝えいただけますと、その後の手続きがスムーズです(下記画像のYOUR-ORGANIZATIONは、利用を希望するAnnofab組織名に読み替えてください)。

作業手順

S3バケットのCORS設定を作成

以下のJSONを使用して、S3バケットのCORS設定を作成してください。

[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "https://annofab.com", "https://d2rljy8mjgrfyd.cloudfront.net" ], "ExposeHeaders": [ "Content-Disposition", "Content-Length", "ETag" ] } ]

📘

AllowedOriginsに指定したhttps://d2rljy8mjgrfyd.cloudfront.netは3次元エディタ画面のオリジンです。

IAMポリシーの作成

以下のJSONを利用して、IAMポリシーを作成してください。ポリシーの名前は任意ですが、ここではAnnofabPrivateStoragePolicyとしており、以降の説明でもこの名前を使用します。JSON内のYOUR-BUCKETはお客様のS3のバケット名に置き換えてください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::YOUR-BUCKET" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::YOUR-BUCKET/*" } ] }

IAMロールの作成

以下の手順に従って、IAMロールを作成してください。

ステップ1 信頼されたエンティティを選択

以下の通り入力して、「次へ」ボタンを押してください。

  • 信頼されたエンティティタイプ:カスタム信頼ポリシー
  • カスタム信頼ポリシー:以下のJSONを入力してください。
    • Statement[].Principal.AWSキー: XXXXXXXXXXXXはAnnofabのAWSのアカウントIDとなります。Annofabサポート窓口からお伝えする12桁の数値で置き換えてください。
    • Statement[].Conditionキー: 必須ではなく、省略可能ですが、指定する事でセキュリティが高められます。
      • AnnofabはAssumeRoleを行う際、コンテキストキーsts:ExternalIdの値として組織のID を設定します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::XXXXXXXXXXXX:role/AnnofabStorageAccessRole" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": [ "組織ID(組織名ではありません。組織IDは組織の設定ページで確認できます。)" ] } } } ] }

ステップ2 許可を追加

先ほど作成したポリシーAnnofabPrivateStoragePolicyをロールにアタッチして、「次へ」ボタンを押してください。

ステップ3 名前、確認、および作成

「ロール名」を入力して、「ロールを作成」ボタンを押してください。「ロール名」は任意ですが、以下の例ではAnnofabPrivateStorageAccessorとしています。

AnnofabプロジェクトにIAMロールのARNを設定

先ほど作成したIAMロールのARNをコピーして、Annofabプロジェクトに設定します。

プロジェクトの設定画面を開き、「拡張設定」タブを選択してください。「S3プライベートストレージ認可用AWS IAMロールARN」に、「IAMロールの作成」の手順で作成したIAMロールのARNを貼り付けて、「プロジェクト設定を保存」ボタンを押してください。

📘

Annofabサポート窓口による事前設定が行われていない場合、設定画面に「S3プライベートストレージ認可用AWS IAMロールARN」は表示されません。

Annofabプロジェクトに入力データを作成

S3内のデータを参照する入力データを作成します。現在、外部のストレージを参照する入力データをAnnofabの画面から作成することはできないため、Web APIまたはannofab-cliを利用する必要があります。ここでは、annofab-cliのinput_data putコマンドを利用して入力データを作成します。

S3バケットYOUR-BUCKETに、入力データとして登録したい画像ファイル01.jpg02.jpgが存在するものとします。

以下のCSVを作成してください。1列目は入力データ名、2列目はS3 URIです。ここではinput_data.csvというファイル名にします。YOUR-BUCKETはお客様のS3のバケット名に置き換えてください。

01.jpg,s3://YOUR-BUCKET/01.jpg 02.jpg,s3://YOUR-BUCKET/02.jpg

作成したCSVをinput_data putコマンドに指定して実行すると、入力データが作成されます。${PROJECT_ID}は、対象のAnnofabプロジェクトのプロジェクトIDに置き換えてください。

$ annofabcli input_data put --project_id ${PROJECT_ID} --csv input_data.csv

Annofabの入力データ画面から、入力データが作成されていること、入力データのパスにS3 URIが設定されていることを確認してください。

📘

S3にあるデータを補助情報として登録する

S3に格納されているデータを補助情報として登録する場合は、annofabcli supplementary putコマンドを使用してください。


Did this page help you?