amazon.aws.iam_role module – Manage AWS IAM roles
Note
This module is part of the amazon.aws collection (version 9.0.0).
You might already have this collection installed if you are using the ansible
package.
It is not included in ansible-core
.
To check whether it is installed, run ansible-galaxy collection list
.
To install it, use: ansible-galaxy collection install amazon.aws
.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: amazon.aws.iam_role
.
New in community.aws 1.0.0
Synopsis
Manage AWS IAM roles.
Requirements
The below requirements are needed on the host that executes this module.
python >= 3.6
boto3 >= 1.28.0
botocore >= 1.31.0
Parameters
Parameter |
Comments |
---|---|
AWS access key ID. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The aws_access_key and profile options are mutually exclusive. The aws_access_key_id alias was added in release 5.1.0 for consistency with the AWS botocore SDK. The ec2_access_key alias has been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
The trust relationship policy document that grants an entity permission to assume the role. This parameter is required when |
|
The location of a CA Bundle to use when validating SSL certificates. The |
|
A dictionary to modify the botocore configuration. Parameters can be found in the AWS documentation https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. |
|
The ARN of an IAM managed policy to use to restrict the permissions this role can pass on to IAM roles/users that it creates. Boundaries cannot be set on Instance Profiles, as such if this option is specified then This is intended for roles/users that have permissions to create new IAM objects. For more information on boundaries, see https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html. |
|
If no IAM instance profile with the same This option has been deprecated and will be removed in a release after 2026-05-01. The amazon.aws.iam_instance_profile module can be used to manage instance profiles. Defaults to Choices:
|
|
Use a The Choices:
|
|
When Only applies when This option has been deprecated and will be removed in a release after 2026-05-01. The amazon.aws.iam_instance_profile module can be used to manage instance profiles. Defaults to Choices:
|
|
Provides a description of the role. |
|
URL to connect to instead of the default AWS endpoints. While this can be used to connection to other AWS-compatible services the amazon.aws and community.aws collections are only tested against AWS. The The ec2_url and s3_url aliases have been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
A list of managed policy ARNs, or friendly names. To remove all policies set To embed an inline policy, use amazon.aws.iam_policy. |
|
The maximum duration (in seconds) of a session when assuming the role. Valid values are between 1 and 12 hours (3600 and 43200 seconds). |
|
The path of the role. For more information about IAM paths, see the AWS IAM identifiers documentation https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html. Updating the path on an existing role is not currently supported and will result in a warning.
|
|
A named AWS profile to use for authentication. See the AWS documentation for more information about named profiles https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html. The The profile option is mutually exclusive with the aws_access_key, aws_secret_key and security_token options. |
|
When Choices:
|
|
If If the Tag keys beginning with Choices:
|
|
The AWS region to use. For global services such as IAM, Route53 and CloudFront, region is ignored. The See the Amazon AWS documentation for more information http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region. The Support for the |
|
AWS secret access key. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The secret_key and profile options are mutually exclusive. The aws_secret_access_key alias was added in release 5.1.0 for consistency with the AWS botocore SDK. The ec2_secret_key alias has been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
AWS STS session token for use with temporary credentials. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The security_token and profile options are mutually exclusive. Aliases aws_session_token and session_token were added in release 3.2.0, with the parameter being renamed from security_token to session_token in release 6.0.0. The security_token, aws_security_token, and access_token aliases have been deprecated and will be removed in a release after 2024-12-01. Support for the |
|
Create or remove the IAM role. Choices:
|
|
A dictionary representing the tags to be applied to the resource. If the |
|
When set to Setting validate_certs=false is strongly discouraged, as an alternative, consider setting aws_ca_bundle instead. Choices:
|
|
When Choices:
|
|
How long (in seconds) to wait for creation / update to complete. Default: |
Notes
Note
Caution: For modules, environment variables and configuration files are read from the Ansible ‘host’ context and not the ‘controller’ context. As such, files may need to be explicitly copied to the ‘host’. For lookup and connection plugins, environment variables and configuration files are read from the Ansible ‘controller’ context and not the ‘host’ context.
The AWS SDK (boto3) that Ansible uses may also read defaults for credentials and other settings, such as the region, from its configuration files in the Ansible ‘host’ context (typically
~/.aws/credentials
). See https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html for more information.
Examples
# Note: These examples do not set authentication details, see the AWS Guide for details.
- name: Create a role with description and tags
amazon.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file','policy.json') }}"
description: This is My New Role
tags:
env: dev
- name: "Create a role and attach a managed policy called 'PowerUserAccess'"
amazon.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file','policy.json') }}"
managed_policies:
- arn:aws:iam::aws:policy/PowerUserAccess
- name: Keep the role created above but remove all managed policies
amazon.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file','policy.json') }}"
managed_policies: []
- name: Delete the role
amazon.aws.iam_role:
name: mynewrole
assume_role_policy_document: "{{ lookup('file', 'policy.json') }}"
state: absent
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
---|---|
Dictionary containing the IAM Role data. Returned: success |
|
The Amazon Resource Name (ARN) specifying the role. Returned: always Sample: |
|
The policy that grants an entity permission to assume the role. Note: the case of keys in this dictionary are no longer converted from CamelCase to snake_case. This behaviour changed in release 8.0.0. Returned: always Sample: |
|
Note: this return value has been deprecated and will be removed in a release after
2026-05-01. Returned: always Sample: |
|
A list of dicts containing the name and ARN of the managed IAM policies attached to the role. Returned: always Sample: |
|
The Amazon Resource Name (ARN) specifying the managed policy. Returned: success Sample: |
|
The friendly name that identifies the policy. Returned: success Sample: |
|
The date and time, in ISO 8601 date-time format, when the role was created. Returned: always Sample: |
|
A description of the role. Returned: always Sample: |
|
The maximum duration (in seconds) of a session when assuming the role. Returned: always Sample: |
|
The path to the role. Returned: always Sample: |
|
The stable and unique string identifying the role. Returned: always Sample: |
|
Contains information about the last time that an IAM role was used. Returned: always Sample: |
|
The date and time, in ISO 8601 date-time format that the role was last used. Returned: always |
|
The name of the Amazon Web Services Region in which the role was last used. Returned: always |
|
The friendly name that identifies the role. Returned: always Sample: |
|
role tags Returned: always Sample: |