Actions, resources, and condition keys for AWS IoT Greengrass - Service Authorization Reference

Actions, resources, and condition keys for AWS IoT Greengrass

AWS IoT Greengrass (service prefix: greengrass) provides the following service-specific resources, actions, and condition context keys for use in IAM permission policies.

References:

Actions defined by AWS IoT Greengrass

You can specify the following actions in the Action element of an IAM policy statement. Use policies to grant permissions to perform an operation in AWS. When you use an action in a policy, you usually allow or deny access to the API operation or CLI command with the same name. However, in some cases, a single action controls access to more than one operation. Alternatively, some operations require several different actions.

The Resource types column of the Actions table indicates whether each action supports resource-level permissions. If there is no value for this column, you must specify all resources ("*") to which the policy applies in the Resource element of your policy statement. If the column includes a resource type, then you can specify an ARN of that type in a statement with that action. If the action has one or more required resources, the caller must have permission to use the action with those resources. Required resources are indicated in the table with an asterisk (*). If you limit resource access with the Resource element in an IAM policy, you must include an ARN or pattern for each required resource type. Some actions support multiple resource types. If the resource type is optional (not indicated as required), then you can choose to use one of the optional resource types.

The Condition keys column of the Actions table includes keys that you can specify in a policy statement's Condition element. For more information on the condition keys that are associated with resources for the service, see the Condition keys column of the Resource types table.

Note

Resource condition keys are listed in the Resource types table. You can find a link to the resource type that applies to an action in the Resource types (*required) column of the Actions table. The resource type in the Resource types table includes the Condition keys column, which are the resource condition keys that apply to an action in the Actions table.

For details about the columns in the following table, see Actions table.

Actions Description Access level Resource types (*required) Condition keys Dependent actions
AssociateRoleToGroup Grants permission to associate a role with a group. The role's permissions must allow Greengrass core Lambda functions and connectors to perform actions in other AWS services Write

group*

AssociateServiceRoleToAccount Grants permission to associate a role with your account. AWS IoT Greengrass uses this role to access your Lambda functions and AWS IoT resources Permissions management
CreateConnectorDefinition Grants permission to create a connector definition Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateConnectorDefinitionVersion Grants permission to create a version of an existing connector definition Write

connectorDefinition*

CreateCoreDefinition Grants permission to create a core definition Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateCoreDefinitionVersion Grants permission to create a version of an existing core definition. Greengrass groups must each contain exactly one Greengrass core Write

coreDefinition*

CreateDeployment Grants permission to create a deployment Write

group*

CreateDeviceDefinition Grants permission to create a device definition Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateDeviceDefinitionVersion Grants permission to create a version of an existing device definition Write

deviceDefinition*

CreateFunctionDefinition Grants permission to create a Lambda function definition to be used in a group that contains a list of Lambda functions and their configurations Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateFunctionDefinitionVersion Grants permission to create a version of an existing Lambda function definition Write

functionDefinition*

CreateGroup Grants permission to create a group Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateGroupCertificateAuthority Grants permission to create a CA for the group, or rotate the existing CA Write

group*

CreateGroupVersion Grants permission to create a version of a group that has already been defined Write

group*

CreateLoggerDefinition Grants permission to create a logger definition Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateLoggerDefinitionVersion Grants permission to create a version of an existing logger definition Write

loggerDefinition*

CreateResourceDefinition Grants permission to create a resource definition that contains a list of resources to be used in a group Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateResourceDefinitionVersion Grants permission to create a version of an existing resource definition Write

resourceDefinition*

CreateSoftwareUpdateJob Grants permission to create an AWS IoT job that will trigger your Greengrass cores to update the software they are running Write
CreateSubscriptionDefinition Grants permission to create a subscription definition Write

aws:RequestTag/${TagKey}

aws:TagKeys

CreateSubscriptionDefinitionVersion Grants permission to create a version of an existing subscription definition Write

subscriptionDefinition*

DeleteConnectorDefinition Grants permission to delete a connector definition Write

connectorDefinition*

DeleteCoreDefinition Grants permission to delete a core definition. Deleting a definition that is currently in use in a deployment affects future deployments Write

coreDefinition*

DeleteDeviceDefinition Grants permission to delete a device definition. Deleting a definition that is currently in use in a deployment affects future deployments Write

deviceDefinition*

DeleteFunctionDefinition Grants permission to delete a Lambda function definition. Deleting a definition that is currently in use in a deployment affects future deployments Write

functionDefinition*

DeleteGroup Grants permission to delete a group that is not currently in use in a deployment Write

group*

DeleteLoggerDefinition Grants permission to delete a logger definition. Deleting a definition that is currently in use in a deployment affects future deployments Write

loggerDefinition*

DeleteResourceDefinition Grants permission to delete a resource definition Write

resourceDefinition*

DeleteSubscriptionDefinition Grants permission to delete a subscription definition. Deleting a definition that is currently in use in a deployment affects future deployments Write

subscriptionDefinition*

DisassociateRoleFromGroup Grants permission to disassociate the role from a group Write

group*

DisassociateServiceRoleFromAccount Grants permission to disassociate the service role from an account. Without a service role, deployments will not work Write
Discover Grants permission to retrieve information required to connect to a Greengrass core Read

thing*

GetAssociatedRole Grants permission to retrieve the role associated with a group Read

group*

GetBulkDeploymentStatus Grants permission to return the status of a bulk deployment Read

bulkDeployment*

GetConnectivityInfo Grants permission to retrieve the connectivity information for a core Read

connectivityInfo*

GetConnectorDefinition Grants permission to retrieve information about a connector definition Read

connectorDefinition*

GetConnectorDefinitionVersion Grants permission to retrieve information about a connector definition version Read

connectorDefinition*

connectorDefinitionVersion*

GetCoreDefinition Grants permission to retrieve information about a core definition Read

coreDefinition*

GetCoreDefinitionVersion Grants permission to retrieve information about a core definition version Read

coreDefinition*

coreDefinitionVersion*

GetDeploymentStatus Grants permission to return the status of a deployment Read

deployment*

group*

GetDeviceDefinition Grants permission to retrieve information about a device definition Read

deviceDefinition*

GetDeviceDefinitionVersion Grants permission to retrieve information about a device definition version Read

deviceDefinition*

deviceDefinitionVersion*

GetFunctionDefinition Grants permission to retrieve information about a Lambda function definition, such as its creation time and latest version Read

functionDefinition*

GetFunctionDefinitionVersion Grants permission to retrieve information about a Lambda function definition version, such as which Lambda functions are included in the version and their configurations Read

functionDefinition*

functionDefinitionVersion*

GetGroup Grants permission to retrieve information about a group Read

group*

GetGroupCertificateAuthority Grants permission to return the public key of the CA associated with a group Read

certificateAuthority*

group*

GetGroupCertificateConfiguration Grants permission to retrieve the current configuration for the CA used by a group Read

group*

GetGroupVersion Grants permission to retrieve information about a group version Read

group*

groupVersion*

GetLoggerDefinition Grants permission to retrieve information about a logger definition Read

loggerDefinition*

GetLoggerDefinitionVersion Grants permission to retrieve information about a logger definition version Read

loggerDefinition*

loggerDefinitionVersion*

GetResourceDefinition Grants permission to retrieve information about a resource definition, such as its creation time and latest version Read

resourceDefinition*

GetResourceDefinitionVersion Grants permission to retrieve information about a resource definition version, such as which resources are included in the version Read

resourceDefinition*

resourceDefinitionVersion*

GetServiceRoleForAccount Grants permission to retrieve the service role that is attached to an account Read
GetSubscriptionDefinition Grants permission to retrieve information about a subscription definition Read

subscriptionDefinition*

GetSubscriptionDefinitionVersion Grants permission to retrieve information about a subscription definition version Read

subscriptionDefinition*

subscriptionDefinitionVersion*

GetThingRuntimeConfiguration Grants permission to retrieve runtime configuration of a thing Read

thingRuntimeConfig*

ListBulkDeploymentDetailedReports Grants permission to retrieve a paginated list of the deployments that have been started in a bulk deployment operation and their current deployment status Read

bulkDeployment*

ListBulkDeployments Grants permission to retrieve a list of bulk deployments List
ListConnectorDefinitionVersions Grants permission to list the versions of a connector definition List

connectorDefinition*

ListConnectorDefinitions Grants permission to retrieve a list of connector definitions List
ListCoreDefinitionVersions Grants permission to list the versions of a core definition List

coreDefinition*

ListCoreDefinitions Grants permission to retrieve a list of core definitions List
ListDeployments Grants permission to retrieve a list of all deployments for a group List

group*

ListDeviceDefinitionVersions Grants permission to list the versions of a device definition List

deviceDefinition*

ListDeviceDefinitions Grants permission to retrieve a list of device definitions List
ListFunctionDefinitionVersions Grants permission to list the versions of a Lambda function definition List

functionDefinition*

ListFunctionDefinitions Grants permission to retrieve a list of Lambda function definitions List
ListGroupCertificateAuthorities Grants permission to retrieve a list of current CAs for a group List

group*

ListGroupVersions Grants permission to list the versions of a group List

group*

ListGroups Grants permission to retrieve a list of groups List
ListLoggerDefinitionVersions Grants permission to list the versions of a logger definition List

loggerDefinition*

ListLoggerDefinitions Grants permission to retrieve a list of logger definitions List
ListResourceDefinitionVersions Grants permission to list the versions of a resource definition List

resourceDefinition*

ListResourceDefinitions Grants permission to retrieve a list of resource definitions List
ListSubscriptionDefinitionVersions Grants permission to list the versions of a subscription definition List

subscriptionDefinition*

ListSubscriptionDefinitions Grants permission to retrieve a list of subscription definitions List
ListTagsForResource Grants permission to list the tags for a resource Read

bulkDeployment

connectorDefinition

coreDefinition

deviceDefinition

functionDefinition

group

loggerDefinition

resourceDefinition

subscriptionDefinition

aws:RequestTag/${TagKey}

aws:TagKeys

ResetDeployments Grants permission to reset a group's deployments Write

group*

StartBulkDeployment Grants permission to deploy multiple groups in one operation Write

aws:RequestTag/${TagKey}

aws:TagKeys

StopBulkDeployment Grants permission to stop the execution of a bulk deployment Write

bulkDeployment*

TagResource Grants permission to add tags to a resource Tagging

bulkDeployment

connectorDefinition

coreDefinition

deviceDefinition

functionDefinition

group

loggerDefinition

resourceDefinition

subscriptionDefinition

aws:RequestTag/${TagKey}

aws:TagKeys

UntagResource Grants permission to remove tags from a resource Tagging

bulkDeployment

connectorDefinition

coreDefinition

deviceDefinition

functionDefinition

group

loggerDefinition

resourceDefinition

subscriptionDefinition

aws:TagKeys

UpdateConnectivityInfo Grants permission to update the connectivity information for a Greengrass core. Any devices that belong to the group that has this core will receive this information in order to find the location of the core and connect to it Write

connectivityInfo*

UpdateConnectorDefinition Grants permission to update a connector definition Write

connectorDefinition*

UpdateCoreDefinition Grants permission to update a core definition Write

coreDefinition*

UpdateDeviceDefinition Grants permission to update a device definition Write

deviceDefinition*

UpdateFunctionDefinition Grants permission to update a Lambda function definition Write

functionDefinition*

UpdateGroup Grants permission to update a group Write

group*

UpdateGroupCertificateConfiguration Grants permission to update the certificate expiry time for a group Write

group*

UpdateLoggerDefinition Grants permission to update a logger definition Write

loggerDefinition*

UpdateResourceDefinition Grants permission to update a resource definition Write

resourceDefinition*

UpdateSubscriptionDefinition Grants permission to update a subscription definition Write

subscriptionDefinition*

UpdateThingRuntimeConfiguration Grants permission to update runtime configuration of a thing Write

thingRuntimeConfig*

Resource types defined by AWS IoT Greengrass

The following resource types are defined by this service and can be used in the Resource element of IAM permission policy statements. Each action in the Actions table identifies the resource types that can be specified with that action. A resource type can also define which condition keys you can include in a policy. These keys are displayed in the last column of the Resource types table. For details about the columns in the following table, see Resource types table.

Resource types ARN Condition keys
connectivityInfo arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/things/${ThingName}/connectivityInfo
certificateAuthority arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/groups/${GroupId}/certificateauthorities/${CertificateAuthorityId}
deployment arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/groups/${GroupId}/deployments/${DeploymentId}
bulkDeployment arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/bulk/deployments/${BulkDeploymentId}

aws:ResourceTag/${TagKey}

group arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/groups/${GroupId}

aws:ResourceTag/${TagKey}

groupVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/groups/${GroupId}/versions/${VersionId}
coreDefinition arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/cores/${CoreDefinitionId}

aws:ResourceTag/${TagKey}

coreDefinitionVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/cores/${CoreDefinitionId}/versions/${VersionId}
deviceDefinition arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/devices/${DeviceDefinitionId}

aws:ResourceTag/${TagKey}

deviceDefinitionVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/devices/${DeviceDefinitionId}/versions/${VersionId}
functionDefinition arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/functions/${FunctionDefinitionId}

aws:ResourceTag/${TagKey}

functionDefinitionVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/functions/${FunctionDefinitionId}/versions/${VersionId}
subscriptionDefinition arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/subscriptions/${SubscriptionDefinitionId}

aws:ResourceTag/${TagKey}

subscriptionDefinitionVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/subscriptions/${SubscriptionDefinitionId}/versions/${VersionId}
loggerDefinition arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/loggers/${LoggerDefinitionId}

aws:ResourceTag/${TagKey}

loggerDefinitionVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/loggers/${LoggerDefinitionId}/versions/${VersionId}
resourceDefinition arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/resources/${ResourceDefinitionId}

aws:ResourceTag/${TagKey}

resourceDefinitionVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/resources/${ResourceDefinitionId}/versions/${VersionId}
connectorDefinition arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/connectors/${ConnectorDefinitionId}

aws:ResourceTag/${TagKey}

connectorDefinitionVersion arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/definition/connectors/${ConnectorDefinitionId}/versions/${VersionId}
thing arn:${Partition}:iot:${Region}:${Account}:thing/${ThingName}
thingRuntimeConfig arn:${Partition}:greengrass:${Region}:${Account}:/greengrass/things/${ThingName}/runtimeconfig

Condition keys for AWS IoT Greengrass

AWS IoT Greengrass defines the following condition keys that can be used in the Condition element of an IAM policy. You can use these keys to further refine the conditions under which the policy statement applies. For details about the columns in the following table, see Condition keys table.

To view the global condition keys that are available to all services, see Available global condition keys.

Condition keys Description Type
aws:RequestTag/${TagKey} Filters access by the allowed set of values for each of the mandatory tags String
aws:ResourceTag/${TagKey} Filters access by the tag value associated with the resource String
aws:TagKeys Filters access by the presence of mandatory tags in the request ArrayOfString