

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Arbeite mit IAM
<a name="examples-iam"></a>

Dieser Abschnitt enthält Beispiele für die Programmierung AWS Identity and Access Management (IAM) mit AWS SDK für Java 2.x.

 AWS Identity and Access Management (IAM) ermöglicht es Ihnen, den Zugriff Ihrer Benutzer auf AWS Dienste und Ressourcen sicher zu kontrollieren. Mithilfe von IAM Cookies können Sie AWS Benutzer und Gruppen erstellen und verwalten und ihnen mithilfe von Berechtigungen den Zugriff auf AWS Ressourcen gewähren oder verweigern. Eine vollständige Anleitung dazu IAM finden Sie im [IAM Benutzerhandbuch](https://docs.aws.amazon.com//IAM/latest/UserGuide/introduction.html).

Die folgenden Beispiele enthalten nur den Code, der zur Demonstration jeder Technik nötig ist. Der [vollständige Beispielcode ist verfügbar unter GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2). Von dort aus können Sie eine einzelne Quelldatei herunterladen oder das Repository klonen, um alle Beispiele lokal zu erstellen und auszuführen.

**Topics**
+ [

# IAM Zugangsschlüssel verwalten
](examples-iam-access-keys.md)
+ [

# IAM Nutzer verwalten
](examples-iam-users.md)
+ [IAM-Richtlinien erstellen](feature-iam-policy-builder.md)
+ [

# Mit IAM Richtlinien arbeiten
](examples-iam-policies.md)
+ [

# Arbeiten Sie mit IAM Serverzertifikaten
](examples-iam-server-certificates.md)

# IAM Zugangsschlüssel verwalten
<a name="examples-iam-access-keys"></a>

## Erstellen eines Zugriffsschlüssels
<a name="create-an-access-key"></a>

Um einen IAM Zugriffsschlüssel zu erstellen, rufen Sie die `IamClient’s` `createAccessKey` Methode mit einem [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/CreateAccessKeyRequest.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/CreateAccessKeyRequest.html)Objekt auf.

**Anmerkung**  
Sie müssen die Region auf einstellen, **AWS\$1GLOBAL**damit `IamClient` Anrufe funktionieren, da IAM es sich um einen globalen Dienst handelt.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.CreateAccessKeyRequest;
import software.amazon.awssdk.services.iam.model.CreateAccessKeyResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static String createIAMAccessKey(IamClient iam,String user) {

        try {
            CreateAccessKeyRequest request = CreateAccessKeyRequest.builder()
                .userName(user).build();

            CreateAccessKeyResponse response = iam.createAccessKey(request);
           String keyId = response.accessKey().accessKeyId();
           return keyId;

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "";
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/f807d60010caf3d14fe4cd0801b842fb8e9511ca/javav2/example_code/iam/src/main/java/com/example/iam/CreateAccessKey.java) finden Sie unter GitHub.

## Auflisten von Zugriffsschlüsseln
<a name="list-access-keys"></a>

Um die Zugriffsschlüssel für einen bestimmten Benutzer aufzulisten, erstellen Sie ein [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListAccessKeysRequest.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListAccessKeysRequest.html)Objekt, das den Benutzernamen enthält, für den die Schlüssel aufgelistet werden sollen, und übergeben Sie ihn an die `IamClient’s` `listAccessKeys` Methode.

**Anmerkung**  
Wenn Sie keinen Benutzernamen angeben, wird versucht`listAccessKeys`, die Zugriffsschlüssel aufzulisten, die dem Benutzer zugeordnet sind AWS-Konto , der die Anfrage signiert hat.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.AccessKeyMetadata;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.ListAccessKeysRequest;
import software.amazon.awssdk.services.iam.model.ListAccessKeysResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
```

 **Code** 

```
    public static void listKeys( IamClient iam,String userName ){

        try {
            boolean done = false;
            String newMarker = null;

            while (!done) {
                ListAccessKeysResponse response;

            if(newMarker == null) {
                ListAccessKeysRequest request = ListAccessKeysRequest.builder()
                        .userName(userName).build();
                response = iam.listAccessKeys(request);
            } else {
                ListAccessKeysRequest request = ListAccessKeysRequest.builder()
                        .userName(userName)
                        .marker(newMarker).build();
                response = iam.listAccessKeys(request);
            }

            for (AccessKeyMetadata metadata :
                    response.accessKeyMetadata()) {
                System.out.format("Retrieved access key %s",
                        metadata.accessKeyId());
            }

            if (!response.isTruncated()) {
                done = true;
            } else {
                newMarker = response.marker();
            }
        }

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Die Ergebnisse von `listAccessKeys` sind seitenweise angeordnet (mit einem Standardhöchstwert von 100 Datensätzen pro Aufruf). Sie können das zurückgegebene [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListAccessKeysResponse.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListAccessKeysResponse.html)Objekt aufrufen`isTruncated`, um zu überprüfen, ob die Abfrage weniger Ergebnisse geliefert hat, als verfügbar sind. Falls ja, rufen Sie `marker` für `ListAccessKeysResponse` auf und verwenden es beim Erstellen einer neuen Anforderung. Verwenden Sie diese neue Anforderung im nächsten Aufruf von `listAccessKeys`.

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/f807d60010caf3d14fe4cd0801b842fb8e9511ca/javav2/example_code/iam/src/main/java/com/example/iam/ListAccessKeys.java) finden Sie unter GitHub.

## Abrufen der letzten Nutzungszeit eines Zugriffsschlüssels
<a name="retrieve-an-access-key-s-last-used-time"></a>

Um die Uhrzeit zu ermitteln, zu der ein Zugriffsschlüssel zuletzt verwendet wurde, rufen Sie die `IamClient’s` `getAccessKeyLastUsed` Methode mit der ID des Zugriffsschlüssels auf (die mithilfe eines [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/GetAccessKeyLastUsedRequest.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/GetAccessKeyLastUsedRequest.html)Objekts übergeben werden kann).

Sie können dann das zurückgegebene [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/GetAccessKeyLastUsedResponse.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/GetAccessKeyLastUsedResponse.html)Objekt verwenden, um die Uhrzeit der letzten Verwendung des Schlüssels abzurufen.

 **Importe** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.GetAccessKeyLastUsedRequest;
import software.amazon.awssdk.services.iam.model.GetAccessKeyLastUsedResponse;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static void getAccessKeyLastUsed(IamClient iam, String accessId ){

        try {
            GetAccessKeyLastUsedRequest request = GetAccessKeyLastUsedRequest.builder()
                    .accessKeyId(accessId).build();

            GetAccessKeyLastUsedResponse response = iam.getAccessKeyLastUsed(request);

            System.out.println("Access key was last used at: " +
                    response.accessKeyLastUsed().lastUsedDate());

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        System.out.println("Done");
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/f807d60010caf3d14fe4cd0801b842fb8e9511ca/javav2/example_code/iam/src/main/java/com/example/iam/AccessKeyLastUsed.java) finden Sie unter GitHub.

## Aktivieren oder Deaktivieren von Zugriffsschlüsseln
<a name="iam-access-keys-update"></a>

Sie können einen Zugriffsschlüssel aktivieren oder deaktivieren, indem Sie ein [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/UpdateAccessKeyRequest.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/UpdateAccessKeyRequest.html)Objekt erstellen, die Zugriffsschlüssel-ID, optional den Benutzernamen und das gewünschte [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/StatusType.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/StatusType.html)Objekt angeben und dann das Anforderungsobjekt an die `IamClient’s` `updateAccessKey` Methode übergeben.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.StatusType;
import software.amazon.awssdk.services.iam.model.UpdateAccessKeyRequest;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
```

 **Code** 

```
       public static void updateKey(IamClient iam, String username, String accessId, String status ) {

          try {
              if (status.toLowerCase().equalsIgnoreCase("active")) {
                  statusType = StatusType.ACTIVE;
              } else if (status.toLowerCase().equalsIgnoreCase("inactive")) {
                  statusType = StatusType.INACTIVE;
              } else {
                  statusType = StatusType.UNKNOWN_TO_SDK_VERSION;
              }
              UpdateAccessKeyRequest request = UpdateAccessKeyRequest.builder()
                .accessKeyId(accessId)
                .userName(username)
                .status(statusType)
                .build();

              iam.updateAccessKey(request);

              System.out.printf(
                "Successfully updated the status of access key %s to" +
                        "status %s for user %s", accessId, status, username);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/f807d60010caf3d14fe4cd0801b842fb8e9511ca/javav2/example_code/iam/src/main/java/com/example/iam/UpdateAccessKey.java) finden Sie unter GitHub.

## Löschen eines Zugriffsschlüssels
<a name="delete-an-access-key"></a>

Um einen Zugriffsschlüssel dauerhaft zu löschen, rufen Sie die `IamClient’s` `deleteKey` Methode auf und geben Sie ihr eine, die die ID und den Benutzernamen des Zugriffsschlüssels [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/DeleteAccessKeyRequest.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/DeleteAccessKeyRequest.html)enthält.

**Anmerkung**  
Nach dem Löschen können Schlüssel nicht mehr abgerufen oder verwendet werden. Um einen Schlüssel vorübergehend zu deaktivieren, sodass er später wieder aktiviert werden kann, verwenden Sie stattdessen [`updateAccessKey`](#iam-access-keys-update)Methode.

 **Importe** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.DeleteAccessKeyRequest;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static void deleteKey(IamClient iam ,String username, String accessKey ) {

        try {
            DeleteAccessKeyRequest request = DeleteAccessKeyRequest.builder()
                    .accessKeyId(accessKey)
                    .userName(username)
                    .build();

            iam.deleteAccessKey(request);
            System.out.println("Successfully deleted access key " + accessKey +
                " from user " + username);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/f807d60010caf3d14fe4cd0801b842fb8e9511ca/javav2/example_code/iam/src/main/java/com/example/iam/DeleteAccessKey.java) finden Sie unter GitHub.

## Weitere Informationen
<a name="more-information"></a>
+  [CreateAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html)in der IAM API-Referenz
+  [ListAccessKeys](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html)in der IAM API-Referenz
+  [GetAccessKeyLastUsed](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html)in der IAM API-Referenz
+  [UpdateAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)in der IAM API-Referenz
+  [DeleteAccessKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html)in der IAM API-Referenz

# IAM Nutzer verwalten
<a name="examples-iam-users"></a>

## Erstellen eines Benutzers
<a name="creating-a-user"></a>

Erstellen Sie einen neuen IAM Benutzer, indem Sie mithilfe eines [CreateUserRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/CreateUserRequest.html)Objekts, IamClient das den Benutzernamen enthält, den Benutzernamen für die `createUser` Methode angeben.

 **Importe** 

```
import software.amazon.awssdk.core.waiters.WaiterResponse;
import software.amazon.awssdk.services.iam.model.CreateUserRequest;
import software.amazon.awssdk.services.iam.model.CreateUserResponse;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.waiters.IamWaiter;
import software.amazon.awssdk.services.iam.model.GetUserRequest;
import software.amazon.awssdk.services.iam.model.GetUserResponse;
```

 **Code** 

```
    public static String createIAMUser(IamClient iam, String username ) {

        try {
            // Create an IamWaiter object
            IamWaiter iamWaiter = iam.waiter();

            CreateUserRequest request = CreateUserRequest.builder()
                    .userName(username)
                    .build();

            CreateUserResponse response = iam.createUser(request);

            // Wait until the user is created
            GetUserRequest userRequest = GetUserRequest.builder()
                    .userName(response.user().userName())
                    .build();

            WaiterResponse<GetUserResponse> waitUntilUserExists = iamWaiter.waitUntilUserExists(userRequest);
            waitUntilUserExists.matched().response().ifPresent(System.out::println);
            return response.user().userName();

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
       return "";
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/CreateUser.java) finden Sie unter GitHub.

## -Benutzer auflisten
<a name="listing-users"></a>

Um die IAM Benutzer für Ihr Konto aufzulisten, erstellen Sie ein neues [ListUsersRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListUsersRequest.html)und übergeben Sie es an die IamClient `listUsers` Methode. Sie können die Benutzerliste abrufen, indem Sie das zurückgegebene [ListUsersResponse](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListUsersResponse.html)Objekt aufrufen`users`.

Die von `listUsers` zurückgegebene Benutzerliste ist segmentiert. Sie können prüfen, ob weitere Ergebnisse bereitliegen, indem Sie die `isTruncated`-Methode des Antwortobjekts aufrufen. Wenn sie `true` zurückgibt, rufen Sie die `marker()`-Methode des Antwortobjekts auf. Verwenden Sie den Marker-Wert, um ein neues Objekt zu erstellen. Anschließend rufen Sie die `listUsers`-Methode erneut für die neue Anforderung auf.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.ListUsersRequest;
import software.amazon.awssdk.services.iam.model.ListUsersResponse;
import software.amazon.awssdk.services.iam.model.User;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
```

 **Code** 

```
    public static void listAllUsers(IamClient iam ) {

        try {

             boolean done = false;
             String newMarker = null;

             while(!done) {
                ListUsersResponse response;

                if (newMarker == null) {
                    ListUsersRequest request = ListUsersRequest.builder().build();
                    response = iam.listUsers(request);
                } else {
                    ListUsersRequest request = ListUsersRequest.builder()
                        .marker(newMarker).build();
                    response = iam.listUsers(request);
                }

                for(User user : response.users()) {
                 System.out.format("\n Retrieved user %s", user.userName());
                }

                if(!response.isTruncated()) {
                  done = true;
                } else {
                    newMarker = response.marker();
                }
            }
        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/ListUsers.java) finden Sie unter GitHub.

## Aktualisiere einen Benutzer
<a name="updating-a-user"></a>

Um einen Benutzer zu aktualisieren, rufen Sie die `updateUser` Methode des IamClient Objekts auf, die ein [UpdateUserRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/UpdateUserRequest.html)Objekt verwendet, mit dem Sie den *Namen* oder *Pfad* des Benutzers ändern können.

 **Importe** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.UpdateUserRequest;
```

 **Code** 

```
    public static void updateIAMUser(IamClient iam, String curName,String newName ) {

        try {
            UpdateUserRequest request = UpdateUserRequest.builder()
                    .userName(curName)
                    .newUserName(newName)
                    .build();

            iam.updateUser(request);
            System.out.printf("Successfully updated user to username %s",
                newName);
        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
      }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/UpdateUser.java) finden Sie unter GitHub.

## Einen Benutzer löschen
<a name="deleting-a-user"></a>

Um einen Benutzer zu löschen, rufen Sie die IamClient `deleteUser` Anfrage mit einem [UpdateUserRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/UpdateUserRequest.html)Objektsatz mit dem zu löschenden Benutzernamen auf.

 **Importe** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.DeleteUserRequest;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static void deleteIAMUser(IamClient iam, String userName) {

        try {
            DeleteUserRequest request = DeleteUserRequest.builder()
                    .userName(userName)
                    .build();

            iam.deleteUser(request);
            System.out.println("Successfully deleted IAM user " + userName);
        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/DeleteUser.java) finden Sie unter GitHub.

## Weitere Informationen
<a name="more-information"></a>
+  [IAM Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) im IAM Benutzerhandbuch
+  [IAM Benutzer im IAM Benutzerhandbuch verwalten](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html)
+  [CreateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html)in der IAM API-Referenz
+  [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)in der IAM API-Referenz
+  [UpdateUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html)in der IAM API-Referenz
+  [DeleteUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUser.html)in der IAM API-Referenz

# Erstellen Sie IAM-Richtlinien mit dem AWS SDK for Java 2.x
<a name="feature-iam-policy-builder"></a>

Die [IAM Policy Builder API](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/policybuilder/iam/package-summary.html) ist eine Bibliothek, mit der Sie [IAM-Richtlinien in Java erstellen und in (IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)) hochladen können. AWS Identity and Access Management 

Anstatt eine IAM-Richtlinie durch manuelles Zusammenstellen einer JSON-Zeichenfolge oder durch Lesen einer Datei zu erstellen, bietet die API einen clientseitigen, objektorientierten Ansatz zur Generierung der JSON-Zeichenfolge. Wenn Sie eine bestehende IAM-Richtlinie im JSON-Format lesen, konvertiert die API sie zur Bearbeitung in eine Instanz. [IamPolicy](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/policybuilder/iam/IamPolicy.html)

Die IAM Policy Builder-API wurde mit Version 2.20.105 des SDK verfügbar. Verwenden Sie also diese oder eine spätere Version in Ihrer Maven-Build-Datei. Die neueste Versionsnummer des SDK ist in Maven Central [aufgeführt.](https://central.sonatype.com/artifact/software.amazon.awssdk/iam-policy-builder)

Das folgende Snippet zeigt ein Beispiel für einen Abhängigkeitsblock für eine Maven-Datei. `pom.xml` Auf diese Weise können Sie die IAM Policy Builder-API in Ihrem Projekt verwenden. 

```
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>iam-policy-builder</artifactId>
    <version>2.27.21</version>
</dependency>
```

## Erstellen eines `IamPolicy`
<a name="iam-policy-builder-create"></a>

In diesem Abschnitt finden Sie mehrere Beispiele für die Erstellung von Richtlinien mithilfe der IAM Policy Builder-API.

Beginnen Sie in jedem der folgenden Beispiele mit der `[IamPolicy.Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/policybuilder/iam/IamPolicy.Builder.html)` und fügen Sie mithilfe der `addStatement` Methode eine oder mehrere Anweisungen hinzu. Diesem Muster folgend verfügt der [IamStatement.Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/policybuilder/iam/IamStatement.Builder.html) über Methoden, um der Anweisung den Effekt, die Aktionen, Ressourcen und Bedingungen hinzuzufügen.

### Beispiel: Erstellen Sie eine zeitbasierte Richtlinie
<a name="iam-policy-builder-create-ex-time-based"></a>

Das folgende Beispiel erstellt eine identitätsbasierte Richtlinie, die die Amazon DynamoDB `GetItem` DynamoDB-Aktion zwischen zwei Zeitpunkten ermöglicht.

```
    public String timeBasedPolicyExample() {
        IamPolicy policy = IamPolicy.builder()
                .addStatement(b -> b
                        .effect(IamEffect.ALLOW)
                        .addAction("dynamodb:GetItem")
                        .addResource(IamResource.ALL)
                        .addCondition(b1 -> b1
                                .operator(IamConditionOperator.DATE_GREATER_THAN)
                                .key("aws:CurrentTime")
                                .value("2020-04-01T00:00:00Z"))
                        .addCondition(b1 -> b1
                                .operator(IamConditionOperator.DATE_LESS_THAN)
                                .key("aws:CurrentTime")
                                .value("2020-06-30T23:59:59Z")))
                .build();

        // Use an IamPolicyWriter to write out the JSON string to a more readable format.
        return policy.toJson(IamPolicyWriter.builder()
                        .prettyPrint(true)
                        .build());
    }
```

#### JSON-Ausgabe
<a name="iam-builder-ex-json-date"></a>

Die letzte Anweisung im vorherigen Beispiel gibt die folgende JSON-Zeichenfolge zurück. 

Weitere Informationen zu diesem [Beispiel](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws-dates.html) finden Sie im *AWS Identity and Access Management Benutzerhandbuch*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "dynamodb:GetItem",
        "Resource": "*",
        "Condition": {
            "DateGreaterThan": {
                "aws:CurrentTime": "2020-04-01T00:00:00Z"
            },
            "DateLessThan": {
                "aws:CurrentTime": "2020-06-30T23:59:59Z"
            }
        }
    }
}
```

------

### Beispiel: Geben Sie mehrere Bedingungen an
<a name="iam-policy-builder-create-ex-multi-conditions"></a>

Das folgende Beispiel zeigt, wie Sie eine identitätsbasierte Richtlinie erstellen können, die den Zugriff auf bestimmte DynamoDB-Attribute ermöglicht. Die Richtlinie enthält zwei Bedingungen.

```
    public String multipleConditionsExample() {
        IamPolicy policy = IamPolicy.builder()
                .addStatement(b -> b
                        .effect(IamEffect.ALLOW)
                        .addAction("dynamodb:GetItem")
                        .addAction("dynamodb:BatchGetItem")
                        .addAction("dynamodb:Query")
                        .addAction("dynamodb:PutItem")
                        .addAction("dynamodb:UpdateItem")
                        .addAction("dynamodb:DeleteItem")
                        .addAction("dynamodb:BatchWriteItem")
                        .addResource("arn:aws:dynamodb:*:*:table/table-name")
                        .addConditions(IamConditionOperator.STRING_EQUALS.addPrefix("ForAllValues:"),
                                "dynamodb:Attributes",
                                List.of("column-name1", "column-name2", "column-name3"))
                        .addCondition(b1 -> b1.operator(IamConditionOperator.STRING_EQUALS.addSuffix("IfExists"))
                                .key("dynamodb:Select")
                                .value("SPECIFIC_ATTRIBUTES")))
                .build();

        return policy.toJson(IamPolicyWriter.builder()
                .prettyPrint(true).build());
    }
```

#### JSON-Ausgabe
<a name="iam-builder-ex-json-multi-cond"></a>

Die letzte Anweisung im vorherigen Beispiel gibt die folgende JSON-Zeichenfolge zurück. 

Weitere Informationen zu diesem [Beispiel](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_attributes.html) finden Sie im *AWS Identity and Access Management Benutzerhandbuch*.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
        ],
        "Resource": "arn:aws:dynamodb:*:*:table/table-name",
        "Condition": {
            "ForAllValues:StringEquals": {
                "dynamodb:Attributes": [
                    "column-name1",
                    "column-name2",
                    "column-name3"
                ]
            },
            "StringEqualsIfExists": {
                "dynamodb:Select": "SPECIFIC_ATTRIBUTES"
            }
        }
    }
}
```

------

### Beispiel: Geben Sie Principals an
<a name="iam-policy-builder-create-ex-principals"></a>

Das folgende Beispiel zeigt, wie eine ressourcenbasierte Richtlinie erstellt wird, die allen Prinzipalen mit Ausnahme der in der Bedingung angegebenen den Zugriff auf einen Bucket verweigert.

```
    public String specifyPrincipalsExample() {
        IamPolicy policy = IamPolicy.builder()
                .addStatement(b -> b
                        .effect(IamEffect.DENY)
                        .addAction("s3:*")
                        .addPrincipal(IamPrincipal.ALL)
                        .addResource("arn:aws:s3:::BUCKETNAME/*")
                        .addResource("arn:aws:s3:::BUCKETNAME")
                        .addCondition(b1 -> b1
                                .operator(IamConditionOperator.ARN_NOT_EQUALS)
                                .key("aws:PrincipalArn")
                                .value("arn:aws:iam::444455556666:user/user-name")))
                .build();
        return policy.toJson(IamPolicyWriter.builder()
                .prettyPrint(true).build());
    }
```

#### JSON-Ausgabe
<a name="iam-policy-builder-create-json-ex-principals"></a>

Die letzte Anweisung im vorherigen Beispiel gibt die folgende JSON-Zeichenfolge zurück. 

Weitere Informationen zu diesem [Beispiel](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-anonymous) finden Sie im *AWS Identity and Access Management Benutzerhandbuch*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : {
    "Effect" : "Deny",
    "Principal" : "*",
    "Action" : "s3:*",
    "Resource" : [ "arn:aws:s3:::BUCKETNAME/*", "arn:aws:s3:::BUCKETNAME" ],
    "Condition" : {
      "ArnNotEquals" : {
        "aws:PrincipalArn" : "arn:aws:iam::444455556666:user/user-name"
      }
    }
  }
}
```

------

### Beispiel: Kontenübergreifenden Zugriff zulassen
<a name="iam-policy-builder-create-ex-cross-account"></a>

Das folgende Beispiel zeigt, wie Sie es einer anderen Person ermöglichen AWS-Konto , Objekte in Ihren Bucket hochzuladen, während Sie gleichzeitig die volle Eigentümerkontrolle über die hochgeladenen Objekte behalten. 

```
    public String allowCrossAccountAccessExample() {
        IamPolicy policy = IamPolicy.builder()
                .addStatement(b -> b
                        .effect(IamEffect.ALLOW)
                        .addPrincipal(IamPrincipalType.AWS, "111122223333")
                        .addAction("s3:PutObject")
                        .addResource("arn:aws:s3:::amzn-s3-demo-bucket/*")
                        .addCondition(b1 -> b1
                                .operator(IamConditionOperator.STRING_EQUALS)
                                .key("s3:x-amz-acl")
                                .value("bucket-owner-full-control")))
                .build();
        return policy.toJson(IamPolicyWriter.builder()
                .prettyPrint(true).build());
    }
```

#### JSON-Ausgabe
<a name="iam-policy-builder-create-ex-json-cross-account"></a>

Die letzte Anweisung im vorherigen Beispiel gibt die folgende JSON-Zeichenfolge zurück. 

Weitere Informationen zu diesem [Beispiel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-acl-2) finden Sie im *Amazon Simple Storage Service-Benutzerhandbuch*.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : {
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "111122223333"
    },
    "Action" : "s3:PutObject",
    "Resource" : "arn:aws:s3:::amzn-s3-demo-bucket/*",
    "Condition" : {
      "StringEquals" : {
        "s3:x-amz-acl" : "bucket-owner-full-control"
      }
    }
  }
}
```

------

## Verwenden Sie eine `IamPolicy` mit IAM
<a name="iam-policy-builder-work-with-service"></a>

Nachdem Sie eine `IamPolicy` Instanz erstellt haben, verwenden Sie eine, [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/IamClient.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/IamClient.html)um mit dem IAM-Dienst zu arbeiten. 

Im folgenden Beispiel wird eine Richtlinie erstellt, die es einer [IAM-Identität](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) ermöglicht, Elemente in eine DynamoDB-Tabelle in dem Konto zu schreiben, das mit dem Parameter angegeben ist. `accountID` Die Richtlinie wird dann als JSON-Zeichenfolge in IAM hochgeladen.

```
    public String createAndUploadPolicyExample(IamClient iam, String accountID, String policyName) {
        // Build the policy.
        IamPolicy policy =
                IamPolicy.builder() // 'version' defaults to "2012-10-17".
                        .addStatement(IamStatement.builder()
                                .effect(IamEffect.ALLOW)
                                .addAction("dynamodb:PutItem")
                                .addResource("arn:aws:dynamodb:us-east-1:" + accountID + ":table/exampleTableName")
                                .build())
                        .build();
        // Upload the policy.
        iam.createPolicy(r -> r.policyName(policyName).policyDocument(policy.toJson()));
        return policy.toJson(IamPolicyWriter.builder().prettyPrint(true).build());
    }
```

Das nächste Beispiel baut auf dem vorherigen Beispiel auf. Der Code lädt die Richtlinie herunter und verwendet sie als Grundlage für eine neue Richtlinie, indem die Anweisung kopiert und geändert wird. Die neue Richtlinie wird dann hochgeladen.

```
    public String createNewBasedOnExistingPolicyExample(IamClient iam, String accountID, String policyName, String newPolicyName) {

        String policyArn = "arn:aws:iam::" + accountID + ":policy/" + policyName;
        GetPolicyResponse getPolicyResponse = iam.getPolicy(r -> r.policyArn(policyArn));

        String policyVersion = getPolicyResponse.policy().defaultVersionId();
        GetPolicyVersionResponse getPolicyVersionResponse =
                iam.getPolicyVersion(r -> r.policyArn(policyArn).versionId(policyVersion));

        // Create an IamPolicy instance from the JSON string returned from IAM.
        String decodedPolicy = URLDecoder.decode(getPolicyVersionResponse.policyVersion().document(), StandardCharsets.UTF_8);
        IamPolicy policy = IamPolicy.fromJson(decodedPolicy);

            /*
             All IamPolicy components are immutable, so use the copy method that creates a new instance that
             can be altered in the same method call.

             Add the ability to get an item from DynamoDB as an additional action.
            */
        IamStatement newStatement = policy.statements().get(0).copy(s -> s.addAction("dynamodb:GetItem"));

        // Create a new statement that replaces the original statement.
        IamPolicy newPolicy = policy.copy(p -> p.statements(Arrays.asList(newStatement)));

        // Upload the new policy. IAM now has both policies.
        iam.createPolicy(r -> r.policyName(newPolicyName)
                .policyDocument(newPolicy.toJson()));

        return newPolicy.toJson(IamPolicyWriter.builder().prettyPrint(true).build());
    }
```

### IamClient
<a name="iam-policy-builder-work-with-serivce-create-client"></a>

In den vorherigen Beispielen wird ein `IamClient` Argument verwendet, das wie im folgenden Codeausschnitt dargestellt erstellt wurde.

```
IamClient iam = IamClient.builder().region(Region.AWS_GLOBAL).build();
```

### Richtlinien in JSON
<a name="iam-policy-builder-work-with-serivce-json"></a>

Die Beispiele geben die folgenden JSON-Zeichenketten zurück.

```
First example
{
  "Version": "2012-10-17",		 	 	 
  "Statement" : {
    "Effect" : "Allow",
    "Action" : "dynamodb:PutItem",
    "Resource" : "arn:aws:dynamodb:us-east-1:111122223333:table/exampleTableName"
  }
}

Second example
{
  "Version": "2012-10-17",		 	 	 
  "Statement" : {
    "Effect" : "Allow",
    "Action" : [ "dynamodb:PutItem", "dynamodb:GetItem" ],
    "Resource" : "arn:aws:dynamodb:us-east-1:111122223333:table/exampleTableName"
  }
}
```

# Mit IAM Richtlinien arbeiten
<a name="examples-iam-policies"></a>

## Erstellen einer Richtlinie
<a name="create-a-policy"></a>

Um eine neue Richtlinie zu erstellen, geben Sie den Namen der Richtlinie und ein Richtliniendokument im JSON-Format in einer Methode [CreatePolicyRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/CreatePolicyRequest.html)an. IamClient `createPolicy`

 **Importe** 

```
import software.amazon.awssdk.core.waiters.WaiterResponse;
import software.amazon.awssdk.services.iam.model.CreatePolicyRequest;
import software.amazon.awssdk.services.iam.model.CreatePolicyResponse;
import software.amazon.awssdk.services.iam.model.GetPolicyRequest;
import software.amazon.awssdk.services.iam.model.GetPolicyResponse;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.waiters.IamWaiter;
```

 **Code** 

```
    public static String createIAMPolicy(IamClient iam, String policyName ) {

        try {
            // Create an IamWaiter object
            IamWaiter iamWaiter = iam.waiter();

            CreatePolicyRequest request = CreatePolicyRequest.builder()
                .policyName(policyName)
                .policyDocument(PolicyDocument).build();

            CreatePolicyResponse response = iam.createPolicy(request);

            // Wait until the policy is created
            GetPolicyRequest polRequest = GetPolicyRequest.builder()
                    .policyArn(response.policy().arn())
                    .build();

            WaiterResponse<GetPolicyResponse> waitUntilPolicyExists = iamWaiter.waitUntilPolicyExists(polRequest);
            waitUntilPolicyExists.matched().response().ifPresent(System.out::println);
            return response.policy().arn();

         } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
        return "" ;
    }
```

Das [vollständige](https://github.com/awsdocs/aws-doc-sdk-examples/blob/e41bacfd5e671e7ef1a9f73e972540dc6a434664/javav2/example_code/iam/src/main/java/com/example/iam/CreatePolicy.java) Beispiel finden Sie unter. GitHub

## Abrufen einer Richtlinie
<a name="get-a-policy"></a>

Um eine bestehende Richtlinie abzurufen, rufen Sie die IamClient `getPolicy` Methode auf und geben den ARN der Richtlinie in einem [GetPolicyRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/GetPolicyRequest.html)Objekt an.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.GetPolicyRequest;
import software.amazon.awssdk.services.iam.model.GetPolicyResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static void getIAMPolicy(IamClient iam, String policyArn) {

        try {
            GetPolicyRequest request = GetPolicyRequest.builder()
                .policyArn(policyArn).build();

            GetPolicyResponse response = iam.getPolicy(request);
            System.out.format("Successfully retrieved policy %s",
                response.policy().policyName());

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/GetPolicy.java) finden Sie unter GitHub.

## Anfügen einer Rollenrichtlinie
<a name="attach-a-role-policy"></a>

Sie können eine Richtlinie an eine IAM [Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) anhängen, indem Sie die `attachRolePolicy` Methode IamClient s aufrufen und ihr den Rollennamen und den Richtlinien-ARN in einer angeben [AttachRolePolicyRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/AttachRolePolicyRequest.html).

 **Importe** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.AttachRolePolicyRequest;
import software.amazon.awssdk.services.iam.model.AttachedPolicy;
import software.amazon.awssdk.services.iam.model.ListAttachedRolePoliciesRequest;
import software.amazon.awssdk.services.iam.model.ListAttachedRolePoliciesResponse;
import java.util.List;
```

 **Code** 

```
    public static void attachIAMRolePolicy(IamClient iam, String roleName, String policyArn ) {

        try {

             ListAttachedRolePoliciesRequest request = ListAttachedRolePoliciesRequest.builder()
                    .roleName(roleName)
                    .build();

            ListAttachedRolePoliciesResponse  response = iam.listAttachedRolePolicies(request);
            List<AttachedPolicy> attachedPolicies = response.attachedPolicies();

            // Ensure that the policy is not attached to this role
            String polArn = "";
            for (AttachedPolicy policy: attachedPolicies) {
                polArn = policy.policyArn();
                if (polArn.compareTo(policyArn)==0) {
                   System.out.println(roleName +
                            " policy is already attached to this role.");
                    return;
                }
          }

            AttachRolePolicyRequest attachRequest =
                AttachRolePolicyRequest.builder()
                        .roleName(roleName)
                        .policyArn(policyArn)
                        .build();

            iam.attachRolePolicy(attachRequest);

            System.out.println("Successfully attached policy " + policyArn +
                " to role " + roleName);

         } catch (IamException e) {
                System.err.println(e.awsErrorDetails().errorMessage());
                System.exit(1);
          }

     System.out.println("Done");
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/AttachRolePolicy.java) finden Sie unter GitHub.

## Auflisten angefügter Rollenrichtlinien
<a name="list-attached-role-policies"></a>

Listet die angehängten Richtlinien für eine Rolle auf, indem Sie die `listAttachedRolePolicies` Methode IamClient's aufrufen. Es wird ein [ListAttachedRolePoliciesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListAttachedRolePoliciesRequest.html)Objekt benötigt, das den Rollennamen enthält, um die Richtlinien aufzulisten.

Rufen Sie das zurückgegebene [ListAttachedRolePoliciesResponse](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListAttachedRolePoliciesResponse.html)Objekt `getAttachedPolicies` auf, um die Liste der angehängten Richtlinien abzurufen. Die Ergebnisse sind evtl. gekürzt. Wenn die `isTruncated`-Methode des `ListAttachedRolePoliciesResponse`-Objekts `true` zurückgibt, rufen Sie die `marker`-Methode des `ListAttachedRolePoliciesResponse`-Objekts auf. Verwenden Sie den zurückgegebenen Marker, um eine neue Anforderung zu erstellen, und verwenden Sie sie, um `listAttachedRolePolicies` erneut aufzurufen, um die nächste Ergebnisteilmenge zu erhalten.

 **Importe** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.AttachRolePolicyRequest;
import software.amazon.awssdk.services.iam.model.AttachedPolicy;
import software.amazon.awssdk.services.iam.model.ListAttachedRolePoliciesRequest;
import software.amazon.awssdk.services.iam.model.ListAttachedRolePoliciesResponse;
import java.util.List;
```

 **Code** 

```
    public static void attachIAMRolePolicy(IamClient iam, String roleName, String policyArn ) {

        try {

             ListAttachedRolePoliciesRequest request = ListAttachedRolePoliciesRequest.builder()
                    .roleName(roleName)
                    .build();

            ListAttachedRolePoliciesResponse  response = iam.listAttachedRolePolicies(request);
            List<AttachedPolicy> attachedPolicies = response.attachedPolicies();

            // Ensure that the policy is not attached to this role
            String polArn = "";
            for (AttachedPolicy policy: attachedPolicies) {
                polArn = policy.policyArn();
                if (polArn.compareTo(policyArn)==0) {
                   System.out.println(roleName +
                            " policy is already attached to this role.");
                    return;
                }
          }

            AttachRolePolicyRequest attachRequest =
                AttachRolePolicyRequest.builder()
                        .roleName(roleName)
                        .policyArn(policyArn)
                        .build();

            iam.attachRolePolicy(attachRequest);

            System.out.println("Successfully attached policy " + policyArn +
                " to role " + roleName);

         } catch (IamException e) {
                System.err.println(e.awsErrorDetails().errorMessage());
                System.exit(1);
          }

     System.out.println("Done");
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/AttachRolePolicy.java) finden Sie unter GitHub.

## Trennen einer Rollenrichtlinie
<a name="detach-a-role-policy"></a>

Um eine Richtlinie von einer Rolle zu trennen, rufen Sie die `detachRolePolicy` Methode IamClient's auf und geben Sie ihr den Rollennamen und den Richtlinien-ARN in a. [DetachRolePolicyRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/DetachRolePolicyRequest.html)

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.DetachRolePolicyRequest;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static void detachPolicy(IamClient iam, String roleName, String policyArn ) {

        try {
            DetachRolePolicyRequest request = DetachRolePolicyRequest.builder()
                    .roleName(roleName)
                    .policyArn(policyArn)
                    .build();

            iam.detachRolePolicy(request);
            System.out.println("Successfully detached policy " + policyArn +
                " from role " + roleName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/cf25559da654a7b74bec039c0ab9397dc5951dd4/javav2/example_code/iam/src/main/java/com/example/iam/DetachRolePolicy.java) finden Sie unter. GitHub

## Weitere Informationen
<a name="more-information"></a>
+  [Überblick über die IAM Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) im IAM Benutzerhandbuch.
+ [AWS Referenz zu den IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) im IAM Benutzerhandbuch.
+  [CreatePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreatePolicy.html)in der IAM API-Referenz
+  [GetPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicy.html)in der IAM API-Referenz
+  [AttachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachRolePolicy.html)in der IAM API-Referenz
+  [ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)in der IAM API-Referenz
+  [DetachRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachRolePolicy.html)in der IAM API-Referenz

# Arbeiten Sie mit IAM Serverzertifikaten
<a name="examples-iam-server-certificates"></a>

Um HTTPS-Verbindungen zu Ihrer Website oder Anwendung zu aktivieren AWS, benötigen Sie ein SSL/TLS *Serverzertifikat*. Sie können ein Serverzertifikat verwenden, das von einem externen Anbieter bereitgestellt wurde AWS Certificate Manager oder das Sie von einem externen Anbieter bezogen haben.

Wir empfehlen, dass Sie ACM es für die Bereitstellung, Verwaltung und Bereitstellung Ihrer Serverzertifikate verwenden. Damit können ACM Sie ein Zertifikat anfordern, es für Ihre AWS Ressourcen bereitstellen und die Zertifikatserneuerung für Sie ACM übernehmen lassen. Die von bereitgestellten Zertifikate ACM sind kostenlos. Weitere Informationen zu ACM finden Sie im [AWS Certificate Manager Benutzerhandbuch](https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html).

## Abrufen eines Serverzertifikats
<a name="get-a-server-certificate"></a>

Sie können ein Serverzertifikat abrufen, indem Sie die `getServerCertificate` Methode IamClient 'aufrufen und ihr a [GetServerCertificateRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/GetServerCertificateRequest.html)zusammen mit dem Namen des Zertifikats übergeben.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.GetServerCertificateRequest;
import software.amazon.awssdk.services.iam.model.GetServerCertificateResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static void getCertificate(IamClient iam,String certName ) {

        try {
            GetServerCertificateRequest request = GetServerCertificateRequest.builder()
                    .serverCertificateName(certName)
                    .build();

            GetServerCertificateResponse response = iam.getServerCertificate(request);
            System.out.format("Successfully retrieved certificate with body %s",
                response.serverCertificate().certificateBody());

         } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/0b1785e42949ebf959eaa0f0da4dc2a48f92ea25/javav2/example_code/iam/src/main/java/com/example/iam/GetServerCertificate.java) finden Sie unter GitHub.

## Auflisten von Serverzertifikaten
<a name="list-server-certificates"></a>

Um Ihre Serverzertifikate aufzulisten, rufen Sie die `listServerCertificates` Methode IamClient's mit einem auf [ListServerCertificatesRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListServerCertificatesRequest.html). Sie gibt [ListServerCertificatesResponse](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ListServerCertificatesResponse.html) zurück.

Rufen Sie die `serverCertificateMetadataList` Methode des zurückgegebenen `ListServerCertificateResponse` Objekts auf, um eine Liste von [ServerCertificateMetadata](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/ServerCertificateMetadata.html)Objekten abzurufen, mit denen Sie Informationen zu den einzelnen Zertifikaten abrufen können.

Die Ergebnisse sind evtl. gekürzt. Wenn die `isTruncated`-Methode des `ListServerCertificateResponse`-Objekts `true` zurückgibt, rufen Sie die `marker`-Methode des `ListServerCertificatesResponse`-Objekts auf und verwenden den Marker, um eine neue Anforderung zu erstellen. Verwenden Sie die neue Anforderung, um `listServerCertificates` erneut aufzurufen, um die nächsten Teilergebnisse zu erhalten.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.ListServerCertificatesRequest;
import software.amazon.awssdk.services.iam.model.ListServerCertificatesResponse;
import software.amazon.awssdk.services.iam.model.ServerCertificateMetadata;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
```

 **Code** 

```
    public static void listCertificates(IamClient iam) {

        try {
            boolean done = false;
            String newMarker = null;

            while(!done) {
              ListServerCertificatesResponse response;

            if (newMarker == null) {
                ListServerCertificatesRequest request =
                        ListServerCertificatesRequest.builder().build();
                response = iam.listServerCertificates(request);
            } else {
                ListServerCertificatesRequest request =
                        ListServerCertificatesRequest.builder()
                                .marker(newMarker).build();
                response = iam.listServerCertificates(request);
            }

            for(ServerCertificateMetadata metadata :
                    response.serverCertificateMetadataList()) {
                System.out.printf("Retrieved server certificate %s",
                        metadata.serverCertificateName());
            }

            if(!response.isTruncated()) {
                done = true;
            } else {
                newMarker = response.marker();
            }
        }

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/0b1785e42949ebf959eaa0f0da4dc2a48f92ea25/javav2/example_code/iam/src/main/java/com/example/iam/ListServerCertificates.java) finden Sie unter GitHub.

## Aktualisieren eines Serverzertifikats
<a name="update-a-server-certificate"></a>

Sie können den Namen oder Pfad eines Serverzertifikats aktualisieren, indem Sie die `updateServerCertificate` Methode IamClient's aufrufen. Sie benötigt eine [UpdateServerCertificateRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/UpdateServerCertificateRequest.html)Objektgruppe mit dem aktuellen Namen des Serverzertifikats und entweder einem neuen Namen oder einem neuen Pfad zur Verwendung.

 **Importe** 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
import software.amazon.awssdk.services.iam.model.UpdateServerCertificateRequest;
import software.amazon.awssdk.services.iam.model.UpdateServerCertificateResponse;
```

 **Code** 

```
    public static void updateCertificate(IamClient iam, String curName, String newName) {

        try {
            UpdateServerCertificateRequest request =
                UpdateServerCertificateRequest.builder()
                        .serverCertificateName(curName)
                        .newServerCertificateName(newName)
                        .build();

            UpdateServerCertificateResponse response =
                iam.updateServerCertificate(request);


            System.out.printf("Successfully updated server certificate to name %s",
                newName);

        } catch (IamException e) {
             System.err.println(e.awsErrorDetails().errorMessage());
             System.exit(1);
        }
     }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/0b1785e42949ebf959eaa0f0da4dc2a48f92ea25/javav2/example_code/iam/src/main/java/com/example/iam/UpdateServerCertificate.java) finden Sie unter GitHub.

## Löschen eines Serverzertifikats
<a name="delete-a-server-certificate"></a>

Um ein Serverzertifikat zu löschen, rufen Sie die `deleteServerCertificate` Methode IamClient 'mit einem auf, das den Namen des Zertifikats [DeleteServerCertificateRequest](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/iam/model/DeleteServerCertificateRequest.html)enthält.

 **Importe** 

```
import software.amazon.awssdk.services.iam.model.DeleteServerCertificateRequest;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.iam.IamClient;
import software.amazon.awssdk.services.iam.model.IamException;
```

 **Code** 

```
    public static void deleteCert(IamClient iam,String certName ) {

        try {
            DeleteServerCertificateRequest request =
                DeleteServerCertificateRequest.builder()
                        .serverCertificateName(certName)
                        .build();

            iam.deleteServerCertificate(request);
            System.out.println("Successfully deleted server certificate " +
                    certName);

        } catch (IamException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
```

Das [vollständige Beispiel](https://github.com/awsdocs/aws-doc-sdk-examples/blob/0b1785e42949ebf959eaa0f0da4dc2a48f92ea25/javav2/example_code/iam/src/main/java/com/example/iam/DeleteServerCertificate.java) finden Sie unter GitHub.

## Weitere Informationen
<a name="more-information"></a>
+  [Arbeiten mit Serverzertifikaten](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_server-certs.html) im IAM Benutzerhandbuch
+  [GetServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetServerCertificate.html)in der IAM API-Referenz
+  [ListServerCertificates](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListServerCertificates.html)in der IAM API-Referenz
+  [UpdateServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateServerCertificate.html)in der IAM API-Referenz
+  [DeleteServerCertificate](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteServerCertificate.html)in der IAM API-Referenz
+  [AWS Certificate Manager Benutzerhandbuch](https://docs.aws.amazon.com/acm/latest/userguide/) 