/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the events-2015-10-07.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.CloudWatchEvents.Model
{
///
/// Container for the parameters to the PutPermission operation.
/// Running PutPermission
permits the specified Amazon Web Services account
/// or Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services organization, you can run PutPermission
/// once specifying Principal
as "*" and specifying the Amazon Web Services
/// 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 Amazon Web Services Accounts in the Amazon EventBridge
/// User Guide.
///
///
///
/// The permission policy on the event bus cannot exceed 10 KB in size.
///
///
public partial class PutPermissionRequest : AmazonCloudWatchEventsRequest
{
private string _action;
private Condition _condition;
private string _eventBusName;
private string _policy;
private string _principal;
private string _statementId;
///
/// Gets and sets the property Action.
///
/// The action that you are enabling the other account to perform.
///
///
[AWSProperty(Min=1, Max=64)]
public string Action
{
get { return this._action; }
set { this._action = value; }
}
// Check to see if Action property is set
internal bool IsSetAction()
{
return this._action != null;
}
///
/// Gets and sets the property Condition.
///
/// This parameter enables you to limit the permission to accounts that fulfill a certain
/// condition, such as being a member of a certain Amazon Web Services organization. For
/// more information about Amazon Web Services Organizations, see What
/// Is Amazon Web Services Organizations in the Amazon Web Services Organizations
/// User Guide.
///
///
///
/// If you specify Condition
with an Amazon Web Services 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.
///
///
public Condition Condition
{
get { return this._condition; }
set { this._condition = value; }
}
// Check to see if Condition property is set
internal bool IsSetCondition()
{
return this._condition != null;
}
///
/// Gets and sets the property EventBusName.
///
/// The name of the event bus associated with the rule. If you omit this, the default
/// event bus is used.
///
///
[AWSProperty(Min=1, Max=256)]
public string EventBusName
{
get { return this._eventBusName; }
set { this._eventBusName = value; }
}
// Check to see if EventBusName property is set
internal bool IsSetEventBusName()
{
return this._eventBusName != null;
}
///
/// Gets and sets the property 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.
///
///
public string Policy
{
get { return this._policy; }
set { this._policy = value; }
}
// Check to see if Policy property is set
internal bool IsSetPolicy()
{
return this._policy != null;
}
///
/// Gets and sets the property Principal.
///
/// The 12-digit Amazon Web Services 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.
///
///
[AWSProperty(Min=1, Max=12)]
public string Principal
{
get { return this._principal; }
set { this._principal = value; }
}
// Check to see if Principal property is set
internal bool IsSetPrincipal()
{
return this._principal != null;
}
///
/// Gets and sets the property 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.
///
///
[AWSProperty(Min=1, Max=64)]
public string StatementId
{
get { return this._statementId; }
set { this._statementId = value; }
}
// Check to see if StatementId property is set
internal bool IsSetStatementId()
{
return this._statementId != null;
}
}
}