putPermission method
Running PutPermission
permits the specified AWS account or
AWS organization to put events to the specified event bus. Amazon
EventBridge (CloudWatch Events) rules in your account are triggered by
these events arriving to an event bus in your account.
For another account to send events to your account, that external account must have an EventBridge rule with your account's event bus as a target.
To enable multiple AWS accounts to put events to your event bus, run
PutPermission
once for each of these accounts. Or, if all the
accounts are members of the same AWS organization, you can run
PutPermission
once specifying Principal
as "*"
and specifying the AWS organization ID in Condition
, to grant
permissions to all accounts in that organization.
If you grant permissions using an organization, then accounts in that
organization must specify a RoleArn
with proper permissions
when they use PutTarget
to add your account's event bus as a
target. For more information, see Sending
and Receiving Events Between AWS Accounts in the Amazon EventBridge
User Guide.
The permission policy on the default event bus cannot exceed 10 KB in size.
May throw ResourceNotFoundException. May throw PolicyLengthExceededException. May throw InternalException. May throw ConcurrentModificationException. May throw OperationDisabledException.
Parameter action
:
The action that you are enabling the other account to perform. Currently,
this must be events:PutEvents
.
Parameter condition
:
This parameter enables you to limit the permission to accounts that
fulfill a certain condition, such as being a member of a certain AWS
organization. For more information about AWS Organizations, see What
Is AWS Organizations in the AWS Organizations User Guide.
If you specify Condition
with an AWS organization ID, and
specify "*" as the value for Principal
, you grant permission
to all the accounts in the named organization.
The Condition
is a JSON string which must contain
Type
, Key
, and Value
fields.
Parameter eventBusName
:
The name of the event bus associated with the rule. If you omit this, the
default event bus is used.
Parameter policy
:
A JSON string that describes the permission policy statement. You can
include a Policy
parameter in the request instead of using
the StatementId
, Action
, Principal
,
or Condition
parameters.
Parameter principal
:
The 12-digit AWS account ID that you are permitting to put events to your
default event bus. Specify "*" to permit any account to put events to your
default event bus.
If you specify "*" without specifying Condition
, avoid
creating rules that may match undesirable events. To create more secure
rules, make sure that the event pattern for each rule contains an
account
field with a specific account ID from which to
receive events. Rules with an account field do not match any events sent
from other accounts.
Parameter statementId
:
An identifier string for the external account that you are granting
permissions to. If you later want to revoke the permission for this
external account, specify this StatementId
when you run
RemovePermission.
Implementation
Future<void> putPermission({
String? action,
Condition? condition,
String? eventBusName,
String? policy,
String? principal,
String? statementId,
}) async {
_s.validateStringLength(
'action',
action,
1,
64,
);
_s.validateStringLength(
'eventBusName',
eventBusName,
1,
256,
);
_s.validateStringLength(
'principal',
principal,
1,
12,
);
_s.validateStringLength(
'statementId',
statementId,
1,
64,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSEvents.PutPermission'
};
await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
if (action != null) 'Action': action,
if (condition != null) 'Condition': condition,
if (eventBusName != null) 'EventBusName': eventBusName,
if (policy != null) 'Policy': policy,
if (principal != null) 'Principal': principal,
if (statementId != null) 'StatementId': statementId,
},
);
}