|
@@ -0,0 +1,97 @@
|
|
|
+// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
|
+// SPDX-License-Identifier: Apache-2.0
|
|
|
+
|
|
|
+package com.fdkankan.cloud.acl.controller;
|
|
|
+
|
|
|
+// snippet-start:[sts.java2.assume_role.main]
|
|
|
+// snippet-start:[sts.java2.assume_role.import]
|
|
|
+import software.amazon.awssdk.regions.Region;
|
|
|
+import software.amazon.awssdk.services.sts.StsClient;
|
|
|
+import software.amazon.awssdk.services.sts.model.AssumeRoleRequest;
|
|
|
+import software.amazon.awssdk.services.sts.model.StsException;
|
|
|
+import software.amazon.awssdk.services.sts.model.AssumeRoleResponse;
|
|
|
+import software.amazon.awssdk.services.sts.model.Credentials;
|
|
|
+import java.time.Instant;
|
|
|
+import java.time.ZoneId;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.format.FormatStyle;
|
|
|
+import java.util.Locale;
|
|
|
+// snippet-end:[sts.java2.assume_role.import]
|
|
|
+
|
|
|
+/**
|
|
|
+ * To make this code example work, create a Role that you want to assume.
|
|
|
+ * Then define a Trust Relationship in the AWS Console. You can use this as an
|
|
|
+ * example:
|
|
|
+ *
|
|
|
+ * {
|
|
|
+ * "Version": "2012-10-17",
|
|
|
+ * "Statement": [
|
|
|
+ * {
|
|
|
+ * "Effect": "Allow",
|
|
|
+ * "Principal": {
|
|
|
+ * "AWS": "<Specify the ARN of your IAM user you are using in this code
|
|
|
+ * example>"
|
|
|
+ * },
|
|
|
+ * "Action": "sts:AssumeRole"
|
|
|
+ * }
|
|
|
+ * ]
|
|
|
+ * }
|
|
|
+ *
|
|
|
+ * For more information, see "Editing the Trust Relationship for an Existing
|
|
|
+ * Role" in the AWS Directory Service guide.
|
|
|
+ *
|
|
|
+ * Also, set up your development environment, including your credentials.
|
|
|
+ *
|
|
|
+ * For information, see this documentation topic:
|
|
|
+ *
|
|
|
+ * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
|
|
|
+ */
|
|
|
+public class AssumeRole {
|
|
|
+ public static void main(String[] args) {
|
|
|
+ final String usage = "";
|
|
|
+
|
|
|
+ if (args.length != 2) {
|
|
|
+ System.out.println(usage);
|
|
|
+ System.exit(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ String roleArn = args[0];
|
|
|
+ String roleSessionName = args[1];
|
|
|
+ Region region = Region.EU_WEST_2;
|
|
|
+ StsClient stsClient = StsClient.builder()
|
|
|
+ .region(region)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ assumeGivenRole(stsClient, roleArn, roleSessionName);
|
|
|
+ stsClient.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void assumeGivenRole(StsClient stsClient, String roleArn, String roleSessionName) {
|
|
|
+ try {
|
|
|
+ AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
|
|
|
+ .roleArn(roleArn)
|
|
|
+ .roleSessionName(roleSessionName)
|
|
|
+ .build();
|
|
|
+
|
|
|
+ AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
|
|
|
+ Credentials myCreds = roleResponse.credentials();
|
|
|
+
|
|
|
+ // Display the time when the temp creds expire.
|
|
|
+ Instant exTime = myCreds.expiration();
|
|
|
+ String tokenInfo = myCreds.sessionToken();
|
|
|
+
|
|
|
+ // Convert the Instant to readable date.
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT)
|
|
|
+ .withLocale(Locale.US)
|
|
|
+ .withZone(ZoneId.systemDefault());
|
|
|
+
|
|
|
+ formatter.format(exTime);
|
|
|
+ System.out.println("The token " + tokenInfo + " expires on " + exTime);
|
|
|
+
|
|
|
+ } catch (StsException e) {
|
|
|
+ System.err.println(e.getMessage());
|
|
|
+ System.exit(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+// snippet-end:[sts.java2.assume_role.main]
|