S3プライベートストレージ
S3プライベートストレージをご利用の際には、事前にAnnofabサポート窓口への問い合わせが必要です。
お問い合わせ方法などの詳細は、下記の「事前作業 (Annofabサポート窓口へお問い合わせ)」をご覧ください。
AWSのスクリーンショットは2023年6月に撮影したものです。
S3プライベートストレージを設定するための作業手順について説明します。
S3プライベートストレージとは
S3プライベートストレージは、お客様のAmazon S3に格納されているデータをAnnofabと連携させる機能です。S3プライベートストレージを使うことで、Annofabストレージにデータをアップロードすることなく、お客様管理下のAWS 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 を設定します。
- Statement[].Principal.AWSキー:
{
"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.jpg
、02.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コマンドを使用してください。
Updated 11 days ago