Amazon S3
Amazon S3アクションでは、ファイルのアップロードとダウンロードを行なえます。
Amazon S3のデータソースに接続する
1. 右上のメニューから「データソース」を選択する
2. 「データソースの追加」をクリックする
3. データソースの種類の中から「Amazon S3」を選択する

4. データソースへの接続に必要な情報を入力して保存する

IAMユーザーの作成
上記の 4 のステップでは、Amazon S3の操作に必要な認証情報を登録します。
AWSのコンソール上でIAMユーザーを作成しアクセスキーを発行したうえで、そのアクセスキーとシークレットキーを登録してください。
アクセスキー発行の詳しい方法については、IAM ユーザーのアクセスキーの管理 (opens in a new tab)をご参照ください。
必要なポリシーの割り当て
IAMユーザーには、アクションで行ないたい操作によって、下記の権限を持ったIAMポリシーを割り当てる必要があります。
- アップロード:
s3:PutObject - ダウンロード:
s3:GetObject - オブジェクトの一覧取得:
s3:ListBucket
IAMポリシーの詳しい作成方法に関しては、IAM でのポリシーとアクセス許可 (opens in a new tab)をご参照ください。
OIDC で接続する
OpenID Connect (OIDC) を使用すると、アクセスキーをベースマキナに渡すことなく、IAMロールの権限でAmazon S3を操作できます。ベースマキナが発行するID Tokenを使って sts:AssumeRoleWithWebIdentity を実行し、一時的な認証情報を取得します。
なお、OIDCを利用する場合は、前述のIAMユーザーの作成およびアクセスキーの登録は不要です(認証方式はいずれか一方を選択します)。
以下のTerraformコードで必要なリソースを作成します。<BUCKET_NAME>、<ROLE_NAME>、<AUDIENCE> を環境に合わせて置き換えてください。<AUDIENCE> は任意の文字列で、ベースマキナ側の接続設定の「Audience」と同じ値にする必要があります。
既存のバケットを使用する場合は aws_s3_bucket の定義を削除し、ポリシーの Resource を既存バケットのARNに変更してください。
provider "aws" {
region = "ap-northeast-1"
}
# S3 バケット(既存バケットを使う場合は不要)
resource "aws_s3_bucket" "bucket" {
bucket = "<BUCKET_NAME>"
}
# ベースマキナの IdP を信頼する OIDC プロバイダー
data "tls_certificate" "basemachina" {
url = "https://idp.basemachina.com"
}
resource "aws_iam_openid_connect_provider" "basemachina" {
url = "https://idp.basemachina.com"
client_id_list = ["<AUDIENCE>"]
thumbprint_list = [
data.tls_certificate.basemachina.certificates[length(data.tls_certificate.basemachina.certificates) - 1].sha1_fingerprint,
]
}
# ベースマキナが権限借用する IAM ロール
resource "aws_iam_role" "basemachina" {
name = "<ROLE_NAME>"
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [{
Effect = "Allow"
Principal = { Federated = aws_iam_openid_connect_provider.basemachina.arn }
Action = "sts:AssumeRoleWithWebIdentity"
Condition = {
StringEquals = {
"idp.basemachina.com:aud" = "<AUDIENCE>"
}
}
}]
})
}
# バケットの読み書き権限
resource "aws_iam_role_policy" "s3" {
role = aws_iam_role.basemachina.id
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow"
Action = ["s3:GetObject", "s3:PutObject"]
Resource = "${aws_s3_bucket.bucket.arn}/*"
},
{
Effect = "Allow"
Action = "s3:ListBucket"
Resource = aws_s3_bucket.bucket.arn
},
]
})
}IDトークンのカスタムクレーム
ベースマキナが発行するID Tokenには、以下のカスタムクレームが含まれます。
| クレーム | 内容 |
|---|---|
tenant_subdomain | ご利用のサブドメイン(xxx.basemachina.com の xxx 部分) |
project_id | プロジェクトID |
environment_id | 環境ID |
なお、AWSのIAM信頼ポリシーの条件で利用できるのは idp.basemachina.com:aud と idp.basemachina.com:sub のみで、上記のカスタムクレームは条件に利用できません。アクセス制御は、ロールを引き受ける際の aud(Audience)で行ないます。
ベースマキナ側の設定
セットアップ完了後、データソースの接続設定で認証方式として「OIDC」を選択し、以下の情報を入力します。
| 項目 | 値 | 例 |
|---|---|---|
| Audience | OIDCプロバイダーに登録した値と同じ文字列 | basemachina-s3 |
| IAM ロール ARN | 作成したIAMロールのARN | arn:aws:iam::123456789012:role/role-name |
Amazon S3をアクションで利用する
1. 右上のメニューから「アクション」を選択する
2. 「アクションの追加」をクリックする
3. アクション名やパラメーターを設定する

アップロード

- アクションパラメーターを設定します
- ファイルパラメーターを 必須 にします
- またアップロードするファイル名を指定するためにファイル名を入力するためのテキストパラメーターも必須にします
- バケット名を
test-bucketのように設定します - 実行メソッドを「アップロード」に設定します
- オブジェクト名(オブジェクトキー)を
images/{{ ファイル名 }}のように設定します- アップロードされるファイルのオブジェクト名となります
- ファイル内容に使うパラメーターを1で作成したファイルパラメーターに設定します
アクション実行画面でパラメーターとしてファイル名を test.png と設定し実行した場合は下記にアップロードされます。
s3://test-bucket/images/test.png
ダウンロード

- アクションパラメーターを設定します
- ダウンロードするファイル名を指定するためのテキストパラメーターを必須にします
- バケット名を
test-bucketのように設定します - 実行メソッドを「ダウンロード」に設定します
- オブジェクト名(オブジェクトキー)を
images/{{ ファイル名 }}のように設定します- ダウンロードされるファイルのオブジェクト名となります
アクション実行画面でパラメーターとしてファイル名を test.png と設定し実行した場合は下記のファイルがダウンロードされます。
s3://test-bucket/images/test.png
オブジェクトの一覧

- バケット名を入力します。
- 実行メソッドで「オブジェクトの一覧」を選択します。
- 必要に応じてオブジェクト名(オブジェクトキー)を入力します。
- 保存します。
設定したアクションを実行すると、オブジェクトの一覧を取得できます。
指定したオブジェクト名(オブジェクトキー)は、一覧取得時の接頭辞による絞り込みに使われます。

実行結果の形式
下記の形式のオブジェクトを含んだ配列を返します。
| キー名 | 説明 |
|---|---|
| objectKey | オブジェクト名(オブジェクトキー) |
| lastModified | ファイルの更新日時のUnixTimestamp (秒) |
| size | ファイルのバイトサイズ |
署名付きURLの発行

- バケット名を入力します。
- 実行メソッドで「署名付きURLの発行」を選択します。
- オブジェクト名(オブジェクトキー)を入力します。
- HTTPメソッドを「GET」または「PUT」から選択します。
- 保存します。
設定したアクションを実行すると、署名付きURLが発行されます。

実行結果の形式
下記の形式のオブジェクトを返します。
| キー名 | 説明 |
|---|---|
| signedUrl | 発行した署名付きURL |
発行される署名付きURLの有効期限は24時間です。
ただし、認証方式にOIDCを利用している場合は、署名付きURLの有効期限が一時的な認証情報の寿命(最大1時間)に制限されます。より長期間有効な署名付きURLが必要な場合は、アクセスキーによる認証をご利用ください。
便利な使い方
「バケット名」と「オブジェクト名(オブジェクトキー)」では、アクションのパラメーターのほかに、変数・シークレットと事前定義パラメーターをご利用いただくことができます。環境に応じて値を変更したい場合などにご利用ください。
書式については変数・シークレットの使用方法をご覧ください。