1. pom.xml の STS SDK を参照します。
    <repositories>
         <repository>
             <id>sonatype-nexus-staging</id>
             <name>Sonatype Nexus Staging</name>
             <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
             <releases>
                 <enabled>true</enabled>
             </releases>
             <snapshots>
                 <enabled>true</enabled>
             </snapshots>
         </repository>
     </repositories>
    <dependencies>
     <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>aliyun-java-sdk-sts</artifactId> 
       <version>2.1.6</version>
     </dependency>
     <dependency>
       <groupId>com.aliyun</groupId> 
       <artifactId>aliyun-java-sdk-core</artifactId>
       <version>2.2.0</version>
     </dependency>
    </dependencies>
  2. コード

    STS では、ロールパラメーター roleArn が必要です。 RAM コンソール にログインし、[ロール]をクリックし、該当の[ロール名] をクリックします。 Arn パラメーターは、基本情報欄に表示されます。たとえば、1351140512345678:role/teststs のように表示されます。

    • main 関数
      public static void main(String[] args) throws Exception {
         IClientProfile profile = DefaultProfile.getProfile(
                                                "cn-hangzhou",
                                                <accessKeyId>,
                                                <accessKeySecret>);
         DefaultAcsClient client = new DefaultAcsClient(profile);
         AssumeRoleResponse response = assumeRole(client, <roleArn>);
         AssumeRoleResponse.Credentials credentials = response.getCredentials();
         System.out.println(credentials.getAccessKeyId() + "\n" +
                            credentials.getAccessKeySecret() + "\n" +
                            credentials.getSecurityToken() + "\n" +
                            credentials.getExpiration());
      }
    • 一時的なアクセスキー、および一時的なトークンを生成する関数
      private static AssumeRoleResponse assumeRole(
                                         DefaultAcsClient client,
                                         String roleArn)
                                         throws ClientException {
         final AssumeRoleRequest request = new AssumeRoleRequest();
         request.setVersion("2015-04-01");
         request.setMethod(MethodType.POST);
         request.setProtocol(ProtocolType.HTTPS);
         request.setDurationSeconds(900L);
         request.setRoleArn(roleArn);
         request.setRoleSessionName("test-token");
         return client.getAcsResponse(request);
      }
  3. トークンの有効期間

    サンプルコードで生成されたトークンは 900 秒間有効ですが、必要に応じて変更することができます (900 秒間 から 3,600 秒間の範囲)。

    何度もトークンを新しく生成することなく、有効期間内の生成されたトークンを使用することができます。 次の例は、トークンを再生成する必要があるかどうかを確認するためのコードです。
    private static boolean isTimeExpire(String expiration) {
         Date nowDate = new Date();
         Date expireDate = javax.xml.bind.DatatypeConverter.parseDateTime(expiration).getTime();
         if (expireDate.getTime() <= nowDate.getTime()) {
             return true;
         } else {
             return false;
         }
    }