すべてのプロダクト
Search
ドキュメントセンター

Simple Message Queue (formerly MNS):Configure endpoints and access credentials

最終更新日:Mar 12, 2026

Simple Message Queue (旧称:MNS) の Java SDK を介してリクエストを送信するには、エンドポイントとアクセス認証情報を構成します。SMQ は、長期 AccessKey ペアと一時 Security Token Service (STS) 認証情報をサポートしています。

エンドポイントの構成

SMQ のパブリックエンドポイントまたは内部エンドポイントを aliyun-mns.properties ファイルに設定します。デフォルトでは、SDK はこのファイルを ${user.home}/.aliyun-mns.properties から読み取ります。

オペレーティングシステムファイルパス
Linux / macOS~/.aliyun-mns.properties
Windows%USERPROFILE%\.aliyun-mns.properties

ファイルに以下の行を追加します。

mns.accountendpoint=http://120228xxxxxxx.mns.cn-xxxxxx.aliyuncs.com

エンドポイントを確認するには、SMQ コンソールを開き、[キューの詳細] または [トピックの詳細] ページに移動します。エンドポイントは [エンドポイント] セクションに表示されます。

Endpoint location in the SMQ console

アクセス認証情報の構成

SMQ は 2 種類の認証情報をサポートしています。

認証情報タイプ使用場面セキュリティレベル
長期アクセス認証情報 (AccessKey ペア)SMQ への永続的なアクセスが必要なアプリケーション標準。3ヶ月ごとにローテーションします。
一時アクセス認証情報 (STS)短期間のアクセス、クロスアカウント認証、または ECS ベースのワークロード高。認証情報は自動的に有効期限切れになります。
重要

本番環境では一時アクセス認証情報が推奨されます。これらは一定期間後に有効期限が切れ、きめ細かなアクセス制御をサポートするため、認証情報の漏洩リスクを低減します。

長期アクセス認証情報の構成

Resource Access Management (RAM) ユーザーの AccessKey ペアを使用して、永続的なアクセスを行います。

前提条件

RAM ユーザーの AccessKey ペアを作成します。詳細については、「RAM ユーザーの AccessKey ペアを作成する」をご参照ください。

重要

3ヶ月以上使用されている AccessKey ペアはローテーションしてください。使用されなくなった AccessKey ペアは無効化して削除してください。

ステップ 1: 環境変数の設定

AccessKey ペアは、ソースコードに認証情報を埋め込むのではなく、環境変数に保存します。

macOS

  1. ターミナルを開き、以下を実行します。

       nano ~/.bash_profile
  2. ファイルの末尾に以下の行を追加します。

       export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
       export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
  3. Ctrl+X を押し、Y を押して保存し、Enter を押して閉じます。

  4. 変更を適用します。

       source ~/.bash_profile
  5. 設定を確認します。期待される出力:

       echo $ALIBABA_CLOUD_ACCESS_KEY_ID
       echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
       LTA****
       moiEs****

Linux

  1. ターミナルを開き、以下を実行します。

       sudo vim /etc/profile
  2. ファイルの末尾に以下の行を追加します。

       export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
       export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
  3. Esc キーを押して、:wq と入力し、Enter キーを押して、保存して閉じます。

  4. 変更を適用します。

       source /etc/profile
  5. 設定を確認します。期待される出力:

       echo $ALIBABA_CLOUD_ACCESS_KEY_ID
       echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
       LTA****
       moiEs****

Windows

GUI

以下の手順は Windows 10 を例としています。

  1. [PC] を右クリックし、[プロパティ] を選択します。[システム詳細設定] をクリックします。「システムのプロパティ」ダイアログボックスの「詳細設定」タブで、[環境変数] をクリックします。[ユーザー環境変数またはシステム環境変数] セクションで [新規] をクリックします。

  2. 以下の変数を追加します。

    変数
    ALIBABA_CLOUD_ACCESS_KEY_IDLTA****
    ALIBABA_CLOUD_ACCESS_KEY_SECRETmoiEs****
  3. 設定を確認します。期待される出力:

       echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
       echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
       LTA****
       moiEs****

CMD

  1. コマンドラインインターフェイスを開きます。

  2. 環境変数を設定します。

       set ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
       set ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
  3. 変数を永続化します。

       setx ALIBABA_CLOUD_ACCESS_KEY_ID "%ALIBABA_CLOUD_ACCESS_KEY_ID%"
       setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "%ALIBABA_CLOUD_ACCESS_KEY_SECRET%"
  4. 設定を確認します。期待される出力:

       echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
       echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
       LTA****
       moiEs****

PowerShell

Win+X を押し、必要な範囲に応じて適切な PowerShell オプションを選択します。

現在の会話のみ[Windows PowerShell] を選択):

$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTA****"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "moiEs****"

現在のユーザー向けのすべての新しいセッション[Windows PowerShell] を選択):

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)

すべてのユーザー[Windows PowerShell (Administrator)] を選択):

[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)

設定を確認します。

Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID
Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET

期待される出力:

LTA****
moiEs****

ステップ 2: Java で認証情報をロード

環境変数から AccessKey ペアを取得します。

// Load access credentials from environment variables.
CloudAccount account = new CloudAccount(ServiceSettings.getMNSAccountEndpoint());
警告

アクセス認証情報をソースコードに直接埋め込まないでください。認証情報が漏洩すると、リソースが不正アクセスにさらされる可能性があります。代わりに環境変数を使用してください。

一時アクセス認証情報の構成

短期間またはセキュリティに敏感なアクセスには、以下のいずれかの方法を使用します。

方法ユースケース
STS 一時認証情報RAM ユーザーの AccessKey ペアを公開せずに、期間限定のアクセスを許可します。
RAM ロール特定の権限を持つロールを引き受けるように、RAM ユーザー (同じまたは異なる Alibaba Cloud アカウント) を承認します。
ECS インスタンス RAM ロール自動ローテーションする認証情報を使用して、Elastic Compute Service (ECS) インスタンスから SMQ にアクセスします。

STS 一時認証情報の構成

  1. RAM ユーザーを作成します。詳細については、「RAM ユーザーを作成する」をご参照ください。

  2. AliyunSTSAssumeRoleAccess ポリシーを RAM ユーザーにアタッチします。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。

  3. AssumeRole API オペレーションを呼び出して、一時認証情報 (AccessKey ID、AccessKey Secret、およびセキュリティトークン) を取得します。

  4. 一時認証情報を環境変数として保存し、Java コードでそれらをロードします。

環境変数の設定

macOS
  1. ターミナルを開き、以下を実行します。

       nano ~/.bash_profile
  2. ファイルの末尾に一時認証情報を追加します。

       export MNS_ACCESS_KEY_ID=LTA****
       export MNS_ACCESS_KEY_SECRET=moiEs****
       export MNS_SESSION_TOKEN=CAES****
  3. Ctrl+X を押して、保存するには Y を押し、閉じるには Enter を押します。

  4. 変更を適用します。

       source ~/.bash_profile
  5. 設定を確認します。期待される出力:

       echo $MNS_ACCESS_KEY_ID
       echo $MNS_ACCESS_KEY_SECRET
       echo $MNS_SESSION_TOKEN
       LTA****
       moiEs****
       CAES****
Linux
  1. ターミナルを開き、以下を実行します。

       sudo vim /etc/profile
  2. ファイルの末尾に一時認証情報を追加します。

       export MNS_ACCESS_KEY_ID=LTA****
       export MNS_ACCESS_KEY_SECRET=moiEs****
       export MNS_SESSION_TOKEN=CAES****
  3. Esc」キーを押して、:wq を入力し、「Enter」キーを押して、保存して閉じます。

  4. 変更を適用します。

       source /etc/profile
  5. 設定を確認します。期待される出力:

       echo $MNS_ACCESS_KEY_ID
       echo $MNS_ACCESS_KEY_SECRET
       echo $MNS_SESSION_TOKEN
       LTA****
       moiEs****
       CAES****
Windows
GUI

以下の手順は Windows 10 を例としています。

  1. 右クリック [このPC] して、[プロパティ] を選択します。 [詳細なシステム設定] をクリックします。 システムのプロパティ ダイアログボックスで、[詳細設定] タブの [環境変数] をクリックします。 [新規作成] を、[ユーザー変数またはシステム変数] セクションでクリックします。

  2. 以下の変数を追加します。

    変数
    MNS_ACCESS_KEY_IDLTA****
    MNS_ACCESS_KEY_SECRETmoiEs****
    MNS_SESSION_TOKENCAES****
  3. 設定を確認します。期待される出力:

       echo %MNS_ACCESS_KEY_ID%
       echo %MNS_ACCESS_KEY_SECRET%
       echo %MNS_SESSION_TOKEN%
       LTA****
       moiEs****
       CAES****
CMD
  1. コマンドラインインターフェイスを開きます。

  2. 環境変数を設定します。

       set MNS_ACCESS_KEY_ID=LTA****
       set MNS_ACCESS_KEY_SECRET=moiEs****
       set MNS_SESSION_TOKEN=CAES****
  3. 変数を永続化します。

       setx MNS_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%"
       setx MNS_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
       setx MNS_SESSION_TOKEN "%MNS_SESSION_TOKEN%"
  4. 設定を確認します。期待される出力:

       echo %MNS_ACCESS_KEY_ID%
       echo %MNS_ACCESS_KEY_SECRET%
       echo %MNS_SESSION_TOKEN%
       LTA****
       moiEs****
       CAES****
PowerShell

Win+X」を押して、必要な範囲に応じて適切な PowerShell のオプションを選択します。

現在の会話のみ[Windows PowerShell] を選択):

$env:MNS_ACCESS_KEY_ID = "LTA****"
$env:MNS_ACCESS_KEY_SECRET = "moiEs****"
$env:MNS_SESSION_TOKEN = "CAES****"

現在のユーザー向けのすべての新しいセッション[Windows PowerShell] を選択):

[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::Machine)

すべてのユーザー[Windows PowerShell (管理者)] を選択):

[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::Machine)

設定を確認します。

Get-ChildItem env:MNS_ACCESS_KEY_ID
Get-ChildItem env:MNS_ACCESS_KEY_SECRET
Get-ChildItem env:MNS_SESSION_TOKEN

期待される出力:

LTA****
moiEs****
CAES****

Java で認証情報をロード

// Load STS temporary credentials from environment variables.
String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");
String sessionToken = System.getenv("MNS_SESSION_TOKEN");

AlibabaCloudCredentials credentials = new BasicSessionCredentials(accessKeyId, accessKeySecret, sessionToken);
AlibabaCloudCredentialsProvider provider = new StaticCredentialsProvider(credentials);
警告

アクセス認証情報をソースコードに直接埋め込まないでください。認証情報が漏洩すると、リソースが不正アクセスにさらされる可能性があります。代わりに環境変数を使用してください。

RAM ロールの構成

RAM ロールを使用して、RAM ユーザー (同じまたは異なる Alibaba Cloud アカウント) が特定の権限で SMQ にアクセスできるように承認します。

前提条件

  1. RAM ユーザーの AccessKey ペアを取得します。詳細については、「RAM ユーザーの AccessKey ペアを作成する」をご参照ください。

    重要

    3ヶ月以上使用されている AccessKey ペアはローテーションしてください。使用されなくなった AccessKey ペアは無効化して削除してください。

  2. RAM ロールの Alibaba Cloud Resource Name (ARN) を取得します。ARN は acs:ram::$accountID:role/$roleName の形式に従います。詳細については、「RAM ロールの情報を表示する」をご参照ください。

環境変数の設定

macOS
  1. ターミナルを開き、以下を実行します。

       nano ~/.bash_profile
  2. ファイルの末尾に AccessKey ペアとロール ARN を追加します。

       export MNS_ACCESS_KEY_ID=LTAI****
       export MNS_ACCESS_KEY_SECRET=IrVTNZNy****
       export MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststest
  3. Ctrl+X を押し、Y を押して保存し、Enter を押して閉じます。

  4. 変更を適用します。

       source ~/.bash_profile
  5. 設定を確認します。期待される出力:

       echo $MNS_ACCESS_KEY_ID
       echo $MNS_ACCESS_KEY_SECRET
       echo $MNS_STS_ROLE_ARN
       LTAI****
       IrVTNZNy****
       acs:ram::17464958********:role/mnsststest
Linux
  1. ターミナルを開き、以下を実行します。

       sudo vim /etc/profile
  2. ファイルの末尾に AccessKey ペアとロール ARN を追加します。

       export MNS_ACCESS_KEY_ID=LTAI****
       export MNS_ACCESS_KEY_SECRET=IrVTNZNy****
       export MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststest
  3. Esc を押して、:wq と入力し、Enter を押すと、保存して閉じられます。

  4. 変更を適用します。

       source /etc/profile
  5. 設定を確認します。期待される出力:

       echo $MNS_ACCESS_KEY_ID
       echo $MNS_ACCESS_KEY_SECRET
       echo $MNS_STS_ROLE_ARN
       LTAI****
       IrVTNZNy****
       acs:ram::17464958********:role/mnsststest
Windows
GUI

以下の手順は Windows 10 を例としています。

  1. [PC] を右クリックし、[プロパティ] を選択します。[システムの詳細設定] をクリックします。「システムのプロパティ」ダイアログボックスで、「詳細設定」タブの [環境変数] をクリックします。[ユーザー環境変数またはシステム環境変数] セクションで [新規] をクリックします。

  2. 以下の変数を追加します。

    変数
    MNS_ACCESS_KEY_IDLTAI****
    MNS_ACCESS_KEY_SECRETIrVTNZNy****
    MNS_STS_ROLE_ARNacs:ram::17464958********:role/mnsststest
  3. 設定を確認します。期待される出力:

       echo %MNS_ACCESS_KEY_ID%
       echo %MNS_ACCESS_KEY_SECRET%
       echo %MNS_STS_ROLE_ARN%
       LTAI****
       IrVTNZNy****
       acs:ram::17464958********:role/mnsststest
CMD
  1. コマンドラインインターフェイスを開きます。

  2. 環境変数を設定します。

       set MNS_ACCESS_KEY_ID=LTAI****
       set MNS_ACCESS_KEY_SECRET=IrVTNZNy****
       set MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststest
  3. 変数を永続化します。

       setx MNS_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%"
       setx MNS_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
       setx MNS_STS_ROLE_ARN "%MNS_STS_ROLE_ARN%"
  4. 設定を確認します。期待される出力:

       echo %MNS_ACCESS_KEY_ID%
       echo %MNS_ACCESS_KEY_SECRET%
       echo %MNS_STS_ROLE_ARN%
       LTAI****
       IrVTNZNy****
       acs:ram::17464958********:role/mnsststest
PowerShell

Win+X」を押して、必要な範囲に応じて適切な PowerShell のオプションを選択します。

現在のセッションのみ ([Windows PowerShell] を選択):

$env:MNS_ACCESS_KEY_ID = "LTAI****"
$env:MNS_ACCESS_KEY_SECRET = "IrVTNZNy****"
$env:MNS_STS_ROLE_ARN = "acs:ram::17464958********:role/mnsststest"

現在のユーザー向けのすべての新しいセッション[Windows PowerShell] を選択):

[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_STS_ROLE_ARN', 'acs:ram::17464958********:role/mnsststest', [System.EnvironmentVariableTarget]::Machine)

すべてのユーザー[Windows PowerShell (Administrator)] を選択):

[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
[System.Environment]::SetEnvironmentVariable('MNS_STS_ROLE_ARN', 'acs:ram::17464958********:role/mnsststest', [System.EnvironmentVariableTarget]::Machine)

設定を確認します。

Get-ChildItem env:MNS_ACCESS_KEY_ID
Get-ChildItem env:MNS_ACCESS_KEY_SECRET
Get-ChildItem env:MNS_STS_ROLE_ARN

期待される出力:

LTAI****
IrVTNZNy****
acs:ram::17464958********:role/mnsststest

Java での認証情報の読み込み

// STS ロールの引き受けのためのリージョンを指定します (例: 中国 (杭州))。
String region = "cn-hangzhou";

// 環境変数から RAM ユーザーの AccessKey ペアを読み込みます。
String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");

// 環境変数から RAM ロール ARN を読み込みます。
String roleArn = System.getenv("MNS_STS_ROLE_ARN");

// AccessKey ペアと RAM ロール ARN を使用して、認証情報プロバイダーを作成します。
STSAssumeRoleSessionCredentialsProvider credentialsProvider = CredentialsProviderFactory
        .newSTSAssumeRoleSessionCredentialsProvider(
                region,
                accessKeyId,
                accessKeySecret,
                roleArn
        );
警告

アクセス認証情報をソースコードに直接埋め込まないでください。認証情報が漏洩すると、ご利用のリソースが不正にアクセスされる可能性があります。代わりに環境変数を使用してください。

ECS インスタンスへの RAM ロールの設定

SMQ に ECS インスタンスからアクセスするには、当該インスタンスに RAM ロールを割り当て、SDK がインスタンスメタデータ URL を通じて自動ローテーションされる一時的な認証情報を取得できるようにします。

  1. ECS インスタンスに RAM ロールを割り当てます。詳細については、「インスタンス RAM ロールを使用した ECS による他の Alibaba Cloud サービスへのアクセス許可」をご参照ください。

  2. RAM ロール名を用いて認証情報プロバイダーを作成します:

       // ECS インスタンスにアタッチされた RAM ロールを通じて認証情報を読み込みます。
       // 「ecs-ram-role」を実際のロール名に置き換えてください。
       CredentialsProvider provider = new InstanceProfileCredentialsProvider("ecs-ram-role");

環境変数の設定は不要です。SDK が自動的に ECS インスタンスのメタデータサービスから一時的な認証情報を取得し、リフレッシュします。