AWS STS(Security Token Service)とは、期限つきの認証情報(一時認証情報)を発行するサービスです。 よく使うコマンドは3つで、get-caller-identity は「いま誰として接続しているか」を確かめ、get-session-token は「自分のまま」期限つきの鍵を受け取り、assume-role は「ロールに切り替えて」期限つきの鍵を受け取ります。

この記事では3つのコマンドを AWS CLI と boto3 で実行し、返ってくる JSON を並べて違いを確かめます。あわせて、有効期間・MFA の渡し方・取得後の制限の比較表、環境変数へ一括設定するワンライナー、config の設定例、エラー文と原因の対応表をまとめました。

確認環境:Ubuntu 24.04、AWS CLI 1.46.1、Python 3.11.15、boto3 1.43.103、jq 1.7。AWS の API をローカルで再現するツール(moto 5.2.3)で実行しています。掲載するコマンドは接続先の指定を外してあり、実際の AWS でそのまま使える形です。

AWS STSの早見表

項目 get-caller-identity get-session-token assume-role
用途 いまの接続元(アカウントと Arn)を確認する 自分の権限のまま、期限つきの鍵を受け取る(主に MFA つき操作のため) ロールの権限に切り替えた、期限つきの鍵を受け取る
呼び出せる主体 どの認証情報でも IAM ユーザー(長期のアクセスキー)、ルートユーザー IAM ユーザー、または一時認証情報を持つロール
返ってくるもの UserId、Account、Arn Credentials(4項目) Credentials(4項目)、AssumedRoleUser
取得後の Arn 変わらない 変わらない(ユーザーのまま) arn:aws:sts::アカウント:assumed-role/ロール名/セッション名
有効期間の既定 ― 43,200秒(12時間) 3,600秒(1時間)
有効期間の範囲 ― 900〜129,600秒(36時間)。ルートユーザーは 900〜3,600秒 900秒〜ロールの最大セッション時間(最長 43,200秒)。ロールからロールへ続けて切り替えるときは最長1時間
MFA の渡し方 ― --serial-number と --token-code --serial-number と --token-code(信頼ポリシーで MFA を条件にする)
別アカウントのリソース ― 対象外(同じアカウント向け) 対応(別アカウントのロールを指定できる)
セッションポリシー ― 指定できない 指定できる(権限をさらに絞れる)
取得後にできないこと ― MFA なしで取得した場合の IAM の API 呼び出し、AssumeRole と GetCallerIdentity 以外の STS の API GetFederationToken と GetSessionToken の呼び出し

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「AWS STSの使い方 一時認証情報とassume-roleの違い早見表」

有効期間・呼び出せる主体・制限の値は、AWS 公式の比較表と各 API リファレンス(末尾の参考・出典)で確認した内容です。

3つのコマンドを選ぶ基準

やりたいこと 使うコマンド
どのアカウント・どのユーザーで接続しているか確かめたい aws sts get-caller-identity
MFA を条件にしたポリシーがあり、自分のユーザーのまま操作したい aws sts get-session-token(MFA コードつき)
別の権限(ロール)に切り替えて操作したい aws sts assume-role
別アカウントのリソースを操作したい aws sts assume-role
毎回コマンドを打たずに自動で切り替えたい config の role_arn と source_profile

「誰として動くか」が変わるのは assume-role だけです。 get-session-token は鍵の種類が一時的なものに変わるだけで、権限のもとになるユーザーは同じです。

flowchart LR
    U[IAMユーザー taro<br>長期のアクセスキー] -->|get-session-token| T[一時認証情報<br>Arn は user/taro のまま]
    U -->|assume-role| R[一時認証情報<br>Arn は assumed-role/app-readonly/taro-session]
    T -->|assume-role| R

get-caller-identity でいまの接続元を確かめる

最初に、いまの認証情報が誰のものかを確かめます。作業の前後でこのコマンドを実行すると、切り替えができたかどうかがすぐにわかります。

aws sts get-caller-identity --query '[Account,Arn]'
[
    "123456789012",
    "arn:aws:iam::123456789012:user/taro"
]

Arn だけを1行で受け取りたいときは --output text を付けます。

aws sts get-caller-identity --query Arn --output text
arn:aws:iam::123456789012:user/taro

--query を付けずに実行すると、UserId・Account・Arn の3項目が JSON で返ります。IAM ユーザーの Arn は arn:aws:iam::…:user/名前 の形です。あとで assume-role 後の Arn と見比べます。

get-session-token で自分用の一時認証情報を受け取る

get-session-token は、IAM ユーザーの長期のアクセスキーを使って、同じユーザーの一時認証情報を受け取るコマンドです。

aws sts get-session-token --duration-seconds 3600 | jq '.Credentials | keys'
[
  "AccessKeyId",
  "Expiration",
  "SecretAccessKey",
  "SessionToken"
]

返ってくるのは Credentials の4項目です。AWS CLI の公式リファレンスには、次の形の出力例が載っています。

{
    "Credentials": {
        "AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY",
        "SessionToken": "AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5T…(省略)…",
        "Expiration": "2020-05-19T18:06:10+00:00"
    }
}

有効期間の既定は12時間

--duration-seconds を指定したときと省いたときの Expiration を、実行時刻(UTC)と並べて確かめました。

date -u +%FT%TZ
aws sts get-session-token --duration-seconds 3600 --query Credentials.Expiration --output text
aws sts get-session-token --query Credentials.Expiration --output text
2026-10-05T06:00:59Z
2026-10-05T07:00:58.810726Z
2026-10-05T18:01:00.396551Z

3600 を指定すると1時間後、省くと12時間後(43,200秒) になりました。Expiration は UTC で返るので、日本時間で読むときは9時間を足します。

MFA コードを渡す

MFA を条件にしたポリシーがある場合は、MFA デバイスの識別子と、その時点の6桁のコードを渡します。

aws sts get-session-token \
    --serial-number arn:aws:iam::123456789012:mfa/taro \
    --token-code 123456 \
    --duration-seconds 3600
オプション 渡す値
--serial-number 仮想 MFA デバイスなら arn:aws:iam::アカウント:mfa/名前 の形の ARN、ハードウェアなら機器のシリアル番号
--token-code MFA デバイスに表示されている6桁の数字

コードの桁数は CLI が送信前に確かめます。5桁で実行すると次のように止まります。

Parameter validation failed:
Invalid length for parameter TokenCode, value: 5, valid min length: 6

公式ドキュメントによると、MFA の有無を表す条件キー aws:MultiFactorAuthPresent は一時認証情報にだけ含まれ、長期のアクセスキーには含まれません。MFA を条件にした操作は、get-session-token か assume-role で受け取った一時認証情報で行う、という流れになります。

assume-role でロールの一時認証情報を受け取る

assume-role は、ロールの ARN とセッション名を指定して、ロールの権限を持つ一時認証情報を受け取るコマンドです。ロール側の信頼ポリシーで、呼び出し元が許可されている必要があります。今回使った信頼ポリシーは次のとおりです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
      "Action": "sts:AssumeRole"
    }
  ]
}
aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/app-readonly \
    --role-session-name taro-session \
    --duration-seconds 900
{
    "Credentials": {
        "AccessKeyId": "ASIARZPUZDIKGT66C35M",
        "SecretAccessKey": "RZOCgTnec8RxnENNgMIKo7HbDqfuAzrLhQsPz2B7",
        "SessionToken": "FQoGZXIvYXdzEBYaDbTwQ1xqZ32Fd+oZbgk0tvUJEKt1IqmMY7n7…(省略)…",
        "Expiration": "2026-10-05T06:15:14.990840Z"
    },
    "AssumedRoleUser": {
        "AssumedRoleId": "AROARZPUZDIKK34VXF23O:taro-session",
        "Arn": "arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session"
    },
    "PackedPolicySize": 6
}

get-session-token との違いは AssumedRoleUser が付くことです。ここに、切り替え後の Arn(assumed-role/ロール名/セッション名)が入っています。900秒を指定したので、Expiration は実行の15分後です。--duration-seconds を省いた場合は、1時間後の時刻が返りました。

オプション 意味 決まり
--role-arn 引き受けるロールの ARN 必須
--role-session-name セッションの名前。Arn の末尾と CloudTrail のログに出る 必須。2〜64字、英数字と _+=,.@-
--duration-seconds 有効期間(秒) 900〜ロールの最大セッション時間。既定は 3600
--serial-number / --token-code MFA デバイスと6桁のコード 信頼ポリシーが MFA を条件にしているときに渡す
--external-id 別アカウントのロール側が指定した合言葉 信頼ポリシーで求められているときに渡す。2〜1,224字

受け取った3つの値を環境変数に設定して使う

一時認証情報は、AccessKeyId・SecretAccessKey・SessionToken の3つをそろえて使います。環境変数に設定してから get-caller-identity を実行すると、Arn が切り替わっていることがわかります。

export AWS_ACCESS_KEY_ID=ASIARZPUZDIKGT66C35M
export AWS_SECRET_ACCESS_KEY=RZOCgTnec8RxnENNgMIKo7HbDqfuAzrLhQsPz2B7
export AWS_SESSION_TOKEN=FQoGZXIvYXdzEBYaDbTwQ1xqZ32Fd+oZbgk0tvUJEKt1IqmMY7n7…(省略)…
aws sts get-caller-identity
{
    "UserId": "AROARZPUZDIKK34VXF23O:taro-session",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session"
}

Arn の形の違い

状態 Arn の形
IAM ユーザー(長期のアクセスキー) arn:aws:iam::123456789012:user/taro
get-session-token のあと arn:aws:iam::123456789012:user/taro(ユーザーのまま)
ロール本体(--role-arn に書く値) arn:aws:iam::123456789012:role/app-readonly
assume-role のあと arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session

ロール本体は iam の role/、引き受けたあとのセッションは sts の assumed-role/ です。エラー文やログに出る Arn がどちらの形かを見ると、どの状態で操作したのかを読み取れます。

環境変数に一括設定するワンライナー

3つの値を手で写す代わりに、コマンドの出力から直接 export します。

jq を使う

eval $(aws sts assume-role \
    --role-arn arn:aws:iam::123456789012:role/app-readonly \
    --role-session-name taro-session \
  | jq -r '.Credentials | "export AWS_ACCESS_KEY_ID=\(.AccessKeyId) AWS_SECRET_ACCESS_KEY=\(.SecretAccessKey) AWS_SESSION_TOKEN=\(.SessionToken)"')

aws sts get-caller-identity --query Arn --output text
arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session

--query だけで書く(jq なし)

export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s" \
  $(aws sts assume-role \
      --role-arn arn:aws:iam::123456789012:role/app-readonly \
      --role-session-name taro-session \
      --query "Credentials.[AccessKeyId,SecretAccessKey,SessionToken]" \
      --output text))

aws sts get-caller-identity --query Arn --output text
arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session

get-session-token でも、.Credentials の形は同じなので、コマンド名を入れ替えるだけで同じワンライナーが使えます。

もとのユーザーに戻す

unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

環境変数は config や credentials ファイルより優先されます。作業が終わったら unset しておくと、次の操作がもとのユーザーで行われます。期限が切れた値が残っていると ExpiredToken になるので、その場合も unset が有効です。

config の role_arn・source_profile・mfa_serial で自動的に切り替える

毎回 assume-role を打つ代わりに、~/.aws/config にロールの profile を書いておくと、AWS CLI が裏で AssumeRole を呼び出します。

~/.aws/credentials

[base]
aws_access_key_id = AKIA................
aws_secret_access_key = ........................................

~/.aws/config

[profile base]
region = ap-northeast-1

[profile readonly]
role_arn = arn:aws:iam::123456789012:role/app-readonly
source_profile = base
role_session_name = taro-session
region = ap-northeast-1
aws sts get-caller-identity --profile base --query Arn --output text
aws sts get-caller-identity --profile readonly --query Arn --output text
arn:aws:iam::123456789012:user/taro
arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session

--profile readonly を付けるだけで、ロールに切り替わった状態でコマンドが実行されました。aws configure list --profile readonly で見ると、鍵の出どころ(Type)が assume-role になっています。

      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                 readonly           manual    --profile
access_key     ****************O5R5      assume-role    
secret_key     ****************5xvv      assume-role    
    region           ap-northeast-1              env    AWS_DEFAULT_REGION

受け取った一時認証情報は ~/.aws/cli/cache に JSON ファイルとして保存され、期限までは同じ profile の次のコマンドで再利用されます(実行後、このフォルダにファイルが1つできていました)。公式ドキュメントによると、期限が来ると AWS CLI が自動で取り直します。

MFA や別アカウントのロールを使う profile

公式ドキュメントに載っている設定項目を、用途別にまとめます。

[profile readonly-mfa]
role_arn = arn:aws:iam::123456789012:role/app-readonly
source_profile = base
mfa_serial = arn:aws:iam::123456789012:mfa/taro

[profile other-account]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = base
external_id = 123456
設定項目 意味
role_arn 引き受けるロールの ARN
source_profile AssumeRole を呼び出すときに使う、もとの profile
credential_source source_profile の代わりに、EC2 インスタンスのメタデータなどを出どころにする(例:Ec2InstanceMetadata)
mfa_serial MFA デバイスの ARN またはシリアル番号。コマンド実行時に Enter MFA code for … と尋ねられる
external_id 別アカウントのロール側が求める値
role_session_name セッション名

mfa_serial を書いた profile では、入力したコードは画面に表示されません。一度入力すれば、キャッシュの期限までは再入力なしで使えます。

boto3 で3つの API を呼び出す

Python(boto3)でも、メソッド名がスネークケースになるだけで流れは同じです。

import boto3

sts = boto3.client("sts")

# 1. いまの自分を確認する
me = sts.get_caller_identity()
print("1.", me["Account"], me["Arn"])

# 2. 自分のまま一時認証情報を受け取る(MFA を使うときは SerialNumber と TokenCode を足す)
token = sts.get_session_token(DurationSeconds=3600)
print("2.", sorted(token["Credentials"].keys()))
print("   Expiration:", token["Credentials"]["Expiration"])

# 3. ロールを引き受ける
res = sts.assume_role(
    RoleArn="arn:aws:iam::123456789012:role/app-readonly",
    RoleSessionName="taro-session",
    DurationSeconds=900,
)
cred = res["Credentials"]
print("3.", res["AssumedRoleUser"]["Arn"])
print("   Expiration:", cred["Expiration"], type(cred["Expiration"]).__name__)

# 4. 受け取った3つの値で新しいセッションを作る
session = boto3.Session(
    aws_access_key_id=cred["AccessKeyId"],
    aws_secret_access_key=cred["SecretAccessKey"],
    aws_session_token=cred["SessionToken"],
)
print("4.", session.client("sts").get_caller_identity()["Arn"])
1. 123456789012 arn:aws:iam::123456789012:user/taro
2. ['AccessKeyId', 'Expiration', 'SecretAccessKey', 'SessionToken']
   Expiration: 2026-10-05 07:02:41.262971+00:00
3. arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session
   Expiration: 2026-10-05 06:17:41.270575+00:00 datetime
4. arn:aws:sts::123456789012:assumed-role/app-readonly/taro-session
CLI boto3 引数の対応
aws sts get-caller-identity sts.get_caller_identity() なし
aws sts get-session-token sts.get_session_token() DurationSeconds、SerialNumber、TokenCode
aws sts assume-role sts.assume_role() RoleArn、RoleSessionName、DurationSeconds、SerialNumber、TokenCode、ExternalId

boto3 では Expiration が文字列ではなく datetime(タイムゾーンつき)で返ります。 残り時間を計算するときは cred["Expiration"] - datetime.now(timezone.utc) のように、UTC の現在時刻と引き算します。

MFA を使う場合は、次のように2つの引数を足します。

token = sts.get_session_token(
    DurationSeconds=3600,
    SerialNumber="arn:aws:iam::123456789012:mfa/taro",
    TokenCode="123456",
)

エラー文と原因の対応表

エラー文(要点) 原因 確かめること・直し方
An error occurred (AccessDenied) when calling the AssumeRole operation: User: … is not authorized to perform: sts:AssumeRole on resource: … 呼び出し元の許可、またはロールの信頼ポリシーが合っていない 下の「AccessDenied の確認項目」を順に見る
ExpiredToken / ExpiredTokenException(HTTP 403) 一時認証情報の期限が過ぎた 新しい一時認証情報を受け取り直す。環境変数に残っている値は unset する
An error occurred (InvalidClientTokenId) when calling the GetCallerIdentity operation: The security token included in the request is invalid. アクセスキー ID やセッショントークンが正しくない(写し間違い、無効化されたキー、3つの値の組み合わせ違い) アクセスキーを見直す。一時認証情報は3つの値を同じ発行分でそろえる
MultiFactorAuthentication failed with invalid MFA one time pass code. MFA のコードが合っていない(時間切れのコード、別のデバイスの識別子) 新しく表示されたコードで実行し直す。--serial-number が自分のデバイスか確かめる
Parameter validation failed: Invalid value for parameter DurationSeconds, value: 100, valid min value: 900 有効期間が 900秒より短い 900 以上を指定する
Parameter validation failed: Invalid length for parameter RoleSessionName, value: 1, valid min length: 2 セッション名が1字 2〜64字にする
Parameter validation failed: Invalid length for parameter RoleArn, value: 17, valid min length: 20 --role-arn にロール名だけなど、ARN でない値を渡した arn:aws:iam::アカウント:role/ロール名 の形で渡す
aws: error: the following arguments are required: --role-session-name セッション名の指定がない --role-session-name を付ける

「Parameter validation failed」と「arguments are required」は、AWS CLI が送信前に出すメッセージです。AWS に届く前に止まるので、オプションを直せばすぐ再実行できます。

AccessDenied(sts:AssumeRole)の確認項目

公式のトラブルシューティングに挙がっている確認項目を、見る順番に並べました。

順番 確かめること
1 --role-arn のロール名の大文字・小文字が合っているか(ロール名は大文字と小文字を区別する)
2 呼び出し元の IAM ポリシーに、対象ロールへの sts:AssumeRole の許可があるか
3 ロールの信頼ポリシーの Principal に、呼び出し元のアカウント(またはユーザー・ロール)が入っているか
4 信頼ポリシーの Condition(MFA、ExternalId、接続元 IP、期間など)を満たしているか
5 ポリシーが求めるタグやソース ID が、呼び出し元に付いているか

別アカウントのロールを引き受けるときは、呼び出し元アカウントの許可(2)と、ロール側の信頼ポリシー(3)の両方が必要です。

InvalidClientTokenId を再現する

存在しないアクセスキーで get-caller-identity を実行すると、次のエラーになります。

AWS_ACCESS_KEY_ID=AKIAXXXXXXXXXXXXXXXX AWS_SECRET_ACCESS_KEY=x aws sts get-caller-identity
An error occurred (InvalidClientTokenId) when calling the GetCallerIdentity operation: The security token included in the request is invalid.

boto3 では ClientError として受け取り、コードで分岐できます。

import boto3
from botocore.exceptions import ClientError, ParamValidationError

sts = boto3.client("sts")
try:
    sts.get_caller_identity()
except ClientError as e:
    print(e.response["Error"]["Code"])
    print(e.response["Error"]["Message"])
    print(e.response["ResponseMetadata"]["HTTPStatusCode"])

try:
    sts.assume_role(RoleArn="arn:aws:iam::123456789012:role/app-readonly",
                    RoleSessionName="taro-session", DurationSeconds=100)
except ParamValidationError as e:
    print(type(e).__name__, e)
InvalidClientTokenId
The security token included in the request is invalid.
403
ParamValidationError Parameter validation failed:
Invalid value for parameter DurationSeconds, value: 100, valid min value: 900

AWS から返るエラーは ClientError、送信前の引数チェックは ParamValidationError と、例外の種類が分かれます。

一時認証情報を扱うときのチェックリスト

確認 内容
3つの値がそろっているか AccessKeyId・SecretAccessKey・SessionToken を同じ発行分で設定する
誰として動いているか 操作の前に aws sts get-caller-identity で Arn を見る
期限はいつか Expiration は UTC。長い処理の前に残り時間を確かめる
有効期間は必要な長さか 短い作業は短い期間で発行する
環境変数が残っていないか 作業後は unset する(環境変数はファイルの設定より優先される)
セッション名で追えるか --role-session-name に利用者や用途がわかる名前を付ける

よくある質問

Q. get-session-token と assume-role はどちらを使えばよいですか? A. 権限を切り替えたい、または別アカウントを操作したいなら assume-role です。自分のユーザーの権限のまま、MFA を条件にした操作をしたいときは get-session-token を使います。

Q. assume-role の有効期間を1時間より長くできますか? A. ロールの「最大セッション時間」の設定までなら --duration-seconds で延ばせます(最長12時間)。ロールからロールへ続けて切り替える場合は、最長1時間です。

Q. get-session-token で受け取った鍵で、IAM の操作ができません。 A. 公式ドキュメントによると、MFA の情報を付けずに受け取った一時認証情報では IAM の API を呼び出せません。--serial-number と --token-code を付けて受け取り直してください。

Q. 一時認証情報を途中で延長できますか? A. 発行済みの認証情報の期限は変わりません。新しく get-session-token や assume-role を実行して受け取り直します。config の profile を使えば、期限後に AWS CLI が自動で取り直します。

まとめ

  • get-caller-identity は「いま誰か」を確かめるコマンドで、切り替えの前後に実行すると状態がわかります。
  • get-session-token は自分のまま、assume-role はロールに切り替えて、期限つきの鍵を受け取ります。
  • 有効期間の既定は get-session-token が12時間、assume-role が1時間です。
  • assume-role 後の Arn は arn:aws:sts::…:assumed-role/ロール名/セッション名 の形になります。
  • 一時認証情報は AccessKeyId・SecretAccessKey・SessionToken の3つをそろえて使い、jq や --query のワンライナーで一括設定できます。
  • config に role_arn と source_profile を書くと、--profile だけで切り替えられます。MFA は mfa_serial を足します。
  • エラーが出たら、AccessDenied は許可と信頼ポリシー、ExpiredToken は期限、InvalidClientTokenId は鍵の値を確かめます。

参考・出典

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「AWS STSの使い方 一時認証情報とassume-roleの違い早見表」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?