Package com.pulumi.aws.sns
Class TopicPolicy
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.sns.TopicPolicy
-
public class TopicPolicy extends com.pulumi.resources.CustomResourceProvides an SNS topic policy resource > **NOTE:** If a Principal is specified as just an AWS account ID rather than an ARN, AWS silently converts it to the ARN for the root user, causing future deployments to differ. To avoid this problem, just specify the full ARN, e.g. `arn:aws:iam::123456789012:root` ## Example Usage
## Import ### Identity Schema #### Required - `arn` (String) ARN of the SNS topic. Using `pulumi import`, import SNS Topic Policy using the topic ARN. For example: ```sh $ pulumi import aws:sns/topicPolicy:TopicPolicy user_updates arn:aws:sns:us-west-2:123456789012:my-topic ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.sns.Topic; import com.pulumi.aws.sns.TopicArgs; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.sns.TopicPolicy; import com.pulumi.aws.sns.TopicPolicyArgs; import java.util.ArrayList; import java.util.Arrays; import java.util.Map; import java.io.File; import java.nio.file.Files; import java.nio.file.Paths; public class App { public static void main(String[] args) { Pulumi.run(App::stack); } public static void stack(Context ctx) { var test = new Topic("test", TopicArgs.builder() .name("my-topic-with-policy") .build()); final var snsTopicPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .conditions(GetPolicyDocumentStatementConditionArgs.builder() .test("StringEquals") .variable("AWS:SourceOwner") .values(account_id) .build()) .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("AWS") .identifiers("*") .build()) .actions( "SNS:Subscribe", "SNS:SetTopicAttributes", "SNS:RemovePermission", "SNS:Receive", "SNS:Publish", "SNS:ListSubscriptionsByTopic", "SNS:GetTopicAttributes", "SNS:DeleteTopic", "SNS:AddPermission") .effect("Allow") .resources(test.arn()) .sid("__default_statement_ID") .build()) .policyId("__default_policy_ID") .build()); var default_ = new TopicPolicy("default", TopicPolicyArgs.builder() .arn(test.arn()) .policy(snsTopicPolicy.applyValue(_snsTopicPolicy -> _snsTopicPolicy.json())) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description TopicPolicy(java.lang.String name)TopicPolicy(java.lang.String name, TopicPolicyArgs args)TopicPolicy(java.lang.String name, TopicPolicyArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()static TopicPolicyget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, TopicPolicyState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>owner()com.pulumi.core.Output<java.lang.String>policy()com.pulumi.core.Output<java.lang.String>region()
-
-
-
Constructor Detail
-
TopicPolicy
public TopicPolicy(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
TopicPolicy
public TopicPolicy(java.lang.String name, TopicPolicyArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
TopicPolicy
public TopicPolicy(java.lang.String name, TopicPolicyArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- The ARN of the SNS topic
-
owner
public com.pulumi.core.Output<java.lang.String> owner()
- Returns:
- The AWS Account ID of the SNS topic owner
-
policy
public com.pulumi.core.Output<java.lang.String> policy()
- Returns:
- The fully-formed AWS policy as JSON.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
get
public static TopicPolicy get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable TopicPolicyState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-