# AWS IAM Policy types

_Autogenerated Typescript types for AWS IAM Policy and enums for policy actions for almost 400 AWS services._

This package provides typing and enums for AWS IAM Policies, as describes in

<https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html>.

## Installation

```sh
npm i aws-iam-policy-types
```

## Usage

```ts
import { IAM } from '@aws-sdk/client-iam';
import { AwsIAMPolicy, AwsStsActions } from 'aws-iam-policy-types';

// Configure the AWS SDK
const iam = new IAM({
  region: 'us-west-2',
  credentials: {
    accessKeyId: 'YOUR_ACCESS_KEY_ID',
    secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
  },
});

// Use `AwsIAMPolicy` to have type-safe policy
const assumeRolePolicyDocument: AwsIAMPolicy = {
  Version: policyVersion,
  Statement: [
    {
      Effect: 'Allow',
      Principal: {
        AWS: `arn:aws:iam::${awsAccountId}:root`,
      },
      // Use enums to have type-safe actions
      Action: AwsStsActions.AssumeRole,
    },
  ],
};
const { Role } = await iam.createRole({
  RoleName: 'MyRole',
  AssumeRolePolicyDocument: JSON.stringify(assumeRolePolicyDocument),
});
```

### ExclusiveAwsIAMPolicy

There is also `ExclusiveAwsIAMPolicy` type, which is the same as `AwsIAMPolicy`, except the type is inferred to allow only one of `Action`/`NotAction`, and only one of `Resource`/`NotResource`.

## Documentation

[See here the full list of all available types](./docs/typedoc/modules.md)

## Contributing

Found a bug or hav a feature request? Please open a new issue.

When contributing with your code, please follow the standard best practices:

- Make a fork with your changes, then make a Merge Request to merge it
- Be polite
