1. Docs
  2. Pulumi ESC
  3. Integrations
  4. Rotated secrets
  5. aws-iam

aws-iam

    The aws-iam rotator enables you to rotate access credentials for an AWS IAM user in your Environment. Check out the aws-login documentation to learn more about authenticating with AWS.

    Example

    # my-org/logins/production
    values:
      aws:
        region: us-west-2
        login:
          fn::open::aws-login:
            oidc:
              roleArn: arn:aws:iam::123456789:role/esc-oidc
              sessionName: pulumi-environments-session
              subjectAttributes:
                - currentEnvironment.name
    
    # my-org/rotators/key-rotator
    values:
      iam:
        fn::rotate::aws-iam:
          inputs:
            region: ${environments.logins.production.aws.region}
            login: ${environments.logins.production.aws.login}
            userArn: arn:aws:iam::<account id>:user/<username>
    

    If you have existing access and secret key(s) you want ESC to keep track of, you can optionally provide an initial state.

    # my-org/rotators/key-rotator
    values:
      iam:
        fn::rotate::aws-iam:
          inputs:
            region: ${environments.logins.production.aws.region}
            login: ${environments.logins.production.aws.login}
            userArn: arn:aws:iam::<account id>:user/<username>
          state:
            current:
              accessKeyId: <access key>
              secretAccessKey:
                fn::secret: <secret key>
            previous:
              accessKeyId: <access key>
              secretAccessKey:
                fn::secret: <secret key>
    

    Configuring OIDC

    To learn how to configure OpenID Connect (OIDC) between Pulumi Cloud and AWS, see the OpenID Connect integration documentation. Once you have completed these steps, you can validate that your configuration is working by running either of the following:

    • esc open <org>/<project>/<environment> command of the Pulumi ESC CLI
    • pulumi env open <org>/<project>/<environment> command of the Pulumi CLI

    Make sure to replace <org>, <project>, and <environment> with the values of your Pulumi organization and environment identifier respectively. You should see output similar to the following:

    {
      "aws": {
        "login": {
          "accessKeyId": "ASIA....",
          "secretAccessKey": "mWdm....",
          "sessionToken": "Fwo...."
        }
      },
      "iam": {
       "current": {
          "accessKeyId": "AKIA...",
          "createdAt": "2025-01-01T12:00:00Z",
          "secretAccessKey": "[secret]"
        },
        "previous": {
          "accessKeyId": "AKIA...",
          "createdAt": "2025-01-01T13:00:00Z",
          "secretAccessKey": "[secret]"
        }
      }
    }
    

    Permissions

    The minimum permissions required for the rotation role are:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "iam:ListAccessKeys",
            "iam:CreateAccessKey",
            "iam:DeleteAccessKey",
            "iam:GetUser",
            "iam:TagUser"
          ],
          "Resource": "arn:aws:iam::<account id>:user/<username>"
        }
      ]
    }
    

    Inputs

    PropertyTypeDescription
    regionstring[Optional] - The AWS region to use.
    loginAWSIAMLoginCredentials to use to log in to AWS.
    userArnstringThe ARN of the IAM User.

    State (Optional)

    PropertyTypeDescription
    currentAWSIAMOutputs[Optional] - Current credential information. These are the newest and recommended credentials.
    previousAWSIAMOutputs[Optional] - Previous credential information. These credentials are still valid, but will be phased out next rotation.

    AWSIAMLogin

    PropertyTypeDescription
    accessKeyIdstringThe AWS access key ID
    secretAccessKeystringThe AWS secret access key
    sessionTokenstring[Optional] - The AWS session token, if any.

    Outputs

    PropertyTypeDescription
    currentAWSIAMOutputsCurrent credential information. These are the newest and recommended credentials.
    previousAWSIAMOutputsPrevious credential information. These credentials are still valid, but will be phased out next rotation.

    AWSIAMOutputs

    PropertyTypeDescription
    accessKeyIdstringThe AWS access key ID
    secretAccessKeystringThe AWS secret access key, stored as a secret.
    createdAtstringCreation timestamp (in RFC3339 format)
      eBook - Recommended Practices for Infrastructure as Code (IaC)