RepositoryPermissionsPolicy class

Provides a CodeArtifact Repostory Permissions Policy Resource.

Example Usage

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const exampleKey = new aws.kms.Key("example", {description: "domain key"});
const exampleDomain = new aws.codeartifact.Domain("example", {
    domain: "example",
    encryptionKey: exampleKey.arn,
});
const exampleRepository = new aws.codeartifact.Repository("example", {
    repository: "example",
    domain: exampleDomain.domain,
});
const example = aws.iam.getPolicyDocumentOutput({
    statements: [{
        principals: [{
            type: "*",
            identifiers: ["*"],
        }],
        effect: "Allow",
        actions: ["codeartifact:ReadFromRepository"],
        resources: [exampleRepository.arn],
    }],
});
const exampleRepositoryPermissionsPolicy = new aws.codeartifact.RepositoryPermissionsPolicy("example", {
    repository: exampleRepository.repository,
    domain: exampleDomain.domain,
    policyDocument: example.json,
});
import pulumi
import pulumi_aws as aws

example_key = aws.kms.Key("example", description="domain key")
example_domain = aws.codeartifact.Domain("example",
    domain="example",
    encryption_key=example_key.arn)
example_repository = aws.codeartifact.Repository("example",
    repository="example",
    domain=example_domain.domain)
example = aws.iam.get_policy_document_output(statements=[{
    "principals": [{
        "type": "*",
        "identifiers": ["*"],
    }],
    "effect": "Allow",
    "actions": ["codeartifact:ReadFromRepository"],
    "resources": [example_repository.arn],
}])
example_repository_permissions_policy = aws.codeartifact.RepositoryPermissionsPolicy("example",
    repository=example_repository.repository,
    domain=example_domain.domain,
    policy_document=example.json)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

return await Deployment.RunAsync(() =>
{
    var exampleKey = new Aws.Kms.Key("example", new()
    {
        Description = "domain key",
    });

    var exampleDomain = new Aws.CodeArtifact.Domain("example", new()
    {
        DomainName = "example",
        EncryptionKey = exampleKey.Arn,
    });

    var exampleRepository = new Aws.CodeArtifact.Repository("example", new()
    {
        RepositoryName = "example",
        Domain = exampleDomain.DomainName,
    });

    var example = Aws.Iam.GetPolicyDocument.Invoke(new()
    {
        Statements = new[]
        {
            new Aws.Iam.Inputs.GetPolicyDocumentStatementInputArgs
            {
                Principals = new[]
                {
                    new Aws.Iam.Inputs.GetPolicyDocumentStatementPrincipalInputArgs
                    {
                        Type = "*",
                        Identifiers = new[]
                        {
                            "*",
                        },
                    },
                },
                Effect = "Allow",
                Actions = new[]
                {
                    "codeartifact:ReadFromRepository",
                },
                Resources = new[]
                {
                    exampleRepository.Arn,
                },
            },
        },
    });

    var exampleRepositoryPermissionsPolicy = new Aws.CodeArtifact.RepositoryPermissionsPolicy("example", new()
    {
        Repository = exampleRepository.RepositoryName,
        Domain = exampleDomain.DomainName,
        PolicyDocument = example.Apply(getPolicyDocumentResult => getPolicyDocumentResult.Json),
    });

});
package main

import (
	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/codeartifact"
	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/iam"
	"github.com/pulumi/pulumi-aws/sdk/v7/go/aws/kms"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		exampleKey, err := kms.NewKey(ctx, "example", &kms.KeyArgs{
			Description: pulumi.String("domain key"),
		})
		if err != nil {
			return err
		}
		exampleDomain, err := codeartifact.NewDomain(ctx, "example", &codeartifact.DomainArgs{
			Domain:        pulumi.String("example"),
			EncryptionKey: exampleKey.Arn,
		})
		if err != nil {
			return err
		}
		exampleRepository, err := codeartifact.NewRepository(ctx, "example", &codeartifact.RepositoryArgs{
			Repository: pulumi.String("example"),
			Domain:     exampleDomain.Domain,
		})
		if err != nil {
			return err
		}
		example := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
			Statements: iam.GetPolicyDocumentStatementArray{
				&iam.GetPolicyDocumentStatementArgs{
					Principals: iam.GetPolicyDocumentStatementPrincipalArray{
						&iam.GetPolicyDocumentStatementPrincipalArgs{
							Type: pulumi.String("*"),
							Identifiers: pulumi.StringArray{
								pulumi.String("*"),
							},
						},
					},
					Effect: pulumi.String("Allow"),
					Actions: pulumi.StringArray{
						pulumi.String("codeartifact:ReadFromRepository"),
					},
					Resources: pulumi.StringArray{
						exampleRepository.Arn,
					},
				},
			},
		}, nil)
		_, err = codeartifact.NewRepositoryPermissionsPolicy(ctx, "example", &codeartifact.RepositoryPermissionsPolicyArgs{
			Repository:     exampleRepository.Repository,
			Domain:         exampleDomain.Domain,
			PolicyDocument: example.Json(),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    aws = {
      source = "pulumi/aws"
    }
  }
}

data "aws_iam_getpolicydocument" "example" {
  statements {
    principals {
      type        = "*"
      identifiers = ["*"]
    }
    effect    = "Allow"
    actions   = ["codeartifact:ReadFromRepository"]
    resources = [aws_codeartifact_repository.example.arn]
  }
}

resource "aws_kms_key" "example" {
  description = "domain key"
}
resource "aws_codeartifact_domain" "example" {
  domain         = "example"
  encryption_key = aws_kms_key.example.arn
}
resource "aws_codeartifact_repository" "example" {
  repository = "example"
  domain     = aws_codeartifact_domain.example.domain
}
resource "aws_codeartifact_repositorypermissionspolicy" "example" {
  repository      = aws_codeartifact_repository.example.repository
  domain          = aws_codeartifact_domain.example.domain
  policy_document = data.aws_iam_getpolicydocument.example.json
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.kms.Key;
import com.pulumi.aws.kms.KeyArgs;
import com.pulumi.aws.codeartifact.Domain;
import com.pulumi.aws.codeartifact.DomainArgs;
import com.pulumi.aws.codeartifact.Repository;
import com.pulumi.aws.codeartifact.RepositoryArgs;
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.GetPolicyDocumentStatementPrincipalArgs;
import com.pulumi.aws.codeartifact.RepositoryPermissionsPolicy;
import com.pulumi.aws.codeartifact.RepositoryPermissionsPolicyArgs;
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 exampleKey = new Key("exampleKey", KeyArgs.builder()
            .description("domain key")
            .build());

        var exampleDomain = new Domain("exampleDomain", DomainArgs.builder()
            .domain("example")
            .encryptionKey(exampleKey.arn())
            .build());

        var exampleRepository = new Repository("exampleRepository", RepositoryArgs.builder()
            .repository("example")
            .domain(exampleDomain.domain())
            .build());

        final var example = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
            .statements(GetPolicyDocumentStatementArgs.builder()
                .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                    .type("*")
                    .identifiers("*")
                    .build())
                .effect("Allow")
                .actions("codeartifact:ReadFromRepository")
                .resources(exampleRepository.arn())
                .build())
            .build());

        var exampleRepositoryPermissionsPolicy = new RepositoryPermissionsPolicy("exampleRepositoryPermissionsPolicy", RepositoryPermissionsPolicyArgs.builder()
            .repository(exampleRepository.repository())
            .domain(exampleDomain.domain())
            .policyDocument(example.applyValue(_example -> _example.json()))
            .build());

    }
}
resources:
  exampleKey:
    type: aws:kms:Key
    name: example
    properties:
      description: domain key
  exampleDomain:
    type: aws:codeartifact:Domain
    name: example
    properties:
      domain: example
      encryptionKey: ${exampleKey.arn}
  exampleRepository:
    type: aws:codeartifact:Repository
    name: example
    properties:
      repository: example
      domain: ${exampleDomain.domain}
  exampleRepositoryPermissionsPolicy:
    type: aws:codeartifact:RepositoryPermissionsPolicy
    name: example
    properties:
      repository: ${exampleRepository.repository}
      domain: ${exampleDomain.domain}
      policyDocument: ${example.json}
variables:
  example:
    fn::invoke:
      function: aws:iam:getPolicyDocument
      arguments:
        statements:
          - principals:
              - type: '*'
                identifiers:
                  - '*'
            effect: Allow
            actions:
              - codeartifact:ReadFromRepository
            resources:
              - ${exampleRepository.arn}

Import

Identity Schema

Required

  • resourceArn (String) ARN of the CodeArtifact repository.

Using pulumi import, import CodeArtifact Repository Permissions Policies using the CodeArtifact Repository ARN. For example:

$ pulumi import aws:codeartifact/repositoryPermissionsPolicy:RepositoryPermissionsPolicy example arn:aws:codeartifact:us-west-2:012345678912:repository/tf-acc-test-6968272603913957763/tf-acc-test-6968272603913957763

Constructors

RepositoryPermissionsPolicy(String name, {RepositoryPermissionsPolicyArgs? args, CustomResourceOptions? options})
Creates a new RepositoryPermissionsPolicy. name The Pulumi resource name. args Arguments used to configure this RepositoryPermissionsPolicy. The set of arguments for RepositoryPermissionsPolicy. options Resource options controlling this resource's behavior.
RepositoryPermissionsPolicy.reference(String urn)
Creates a typed reference to an existing RepositoryPermissionsPolicy resource.

Properties

childResources Set<Resource>
finalinherited
completionSources Map<String, IOutputCompletionSource>
latefinalinherited
domain ↔ Output<String>
The name of the domain on which to set the resource policy.
latefinal
domainOwner ↔ Output<String>
The account number of the AWS account that owns the domain.
latefinal
hashCode int
The hash code for this object.
no setterinherited
id ↔ Output<String>
getter/setter pairinherited
isCustom bool
Returns whether this resource is provider-managed.
no setterinherited
isProtected bool
Returns whether this resource is protected from deletion.
no setterinherited
isRemote bool
Whether this resource is registered as remote.
no setterinherited
isResourceReference bool
Whether this instance represents a resource value returned over RPC.
finalinherited
policyDocument ↔ Output<String>
A JSON policy string to be set as the access control resource policy on the provided domain.
latefinal
policyRevision ↔ Output<String>
The current revision of the resource policy to be set. This revision is used for optimistic locking, which prevents others from overwriting your changes to the domain's resource policy.
latefinal
region ↔ Output<String>
Region where this resource will be managed. Defaults to the Region set in the provider configuration.
latefinal
repository ↔ Output<String>
The name of the repository to set the resource policy on.
latefinal
resourceArn ↔ Output<String>
The ARN of the resource associated with the resource policy.
latefinal
resourceTransforms List<ResourceTransform>
Inherited/explicit async transforms.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
transformations List<ResourceTransformation>
Inherited/explicit legacy transformations.
no setterinherited
urn ↔ Output<String>
latefinalinherited

Methods

failId(Object error) → void
Completes this resource ID with an error when registration fails.
inherited
failOutputs(Object error) → void
Completes all output properties with error.
inherited
failUrn(Object error) → void
Completes this resource URN with an error when registration fails.
inherited
getProvider(String moduleMember) → ProviderResource?
Returns provider for moduleMember's package, if configured.
inherited
getResourceName() String
Returns this resource's logical name.
inherited
getResourceType() String
Returns this resource's Pulumi type token.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
registerOutput<T>(String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output<T>
Registers a dynamic output property for this resource.
inherited
resolveId(String? value, {required bool isKnown}) → void
Resolves the provider-assigned ID for this resource.
inherited
resolveOutputs(Struct outputs) → void
Resolves all output properties from a monitor response payload.
inherited
resolveUrn(String value) → void
Resolves this resource's URN once assigned by the engine.
inherited
serializeProperties(Map<String, dynamic> properties) Future<Struct>
Serializes resource properties for RPC transmission.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited

Static Methods

get(String name, Input<String> id, {RepositoryPermissionsPolicyState? state, CustomResourceOptions? options}) RepositoryPermissionsPolicy
Gets an existing RepositoryPermissionsPolicy resource's state with the given name and id.