open-index/open-npm huggingface dataset:
npm package: @pahud/cdk-github-oidc
Description: CDK construct library for Github OpenID Connect Identity Provider
Author: Pahud Hsieh
Latest version: 0.0.387

[![npm version](https://badge.fury.io/js/@pahud%2Fcdk-github-oidc.svg)](https://badge.fury.io/js/@pahud%2Fcdk-github-oidc)
[![PyPI version](https://badge.fury.io/py/pahud-cdk-github-oidc.svg)](https://badge.fury.io/py/pahud-cdk-github-oidc)
[![release](https://github.com/pahud/cdk-github-oidc/actions/workflows/release.yml/badge.svg)](https://github.com/pahud/cdk-github-oidc/actions/workflows/release.yml)

![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)


# cdk-github-oidc

Inspired by [aripalo/aws-cdk-github-oidc](https://github.com/aripalo/aws-cdk-github-oidc), this construct library allows you to create a `Github OpenID Connect Identity Provider` trust relationship with the `Provider` construct as well as federated IAM roles for one or multiple Github repositories.

This construct is still in `experimental` stage and may have breaking changes. However, we aim to make this library as simple as possible.

## Sample

```ts
import { Provider } from '@pahud/cdk-github-oidc';

// create a new provider
const provider = new Provider(stack, 'GithubOpenIdConnectProvider')
// create an IAM role from this provider
provider.createRole('demo-role', 
  // sharing this role across multiple repositories
  [
    { owner: 'octo-org', repo: 'first-repo' },
    { owner: 'octo-org', repo: 'second-repo' },
    { owner: 'octo-org', repo: 'third-repo' },
  ]
)
```

## Import the provider

Each AWS account can only have one GitHub OIDC identity provider. To import the existing one, use `Provider.fromAccount()`:

```ts
// import the provider
const provider = Provider.fromAccount(stack, 'GithubOpenIdConnectProvider')
// create a iam role from the imported provider
provider.createRole(...)
```


## Workflow sample

```yaml
name: demo
on:
  workflow_dispatch: {}
jobs:
  deploy:
    name: Upload to Amazon S3
    runs-on: ubuntu-latest
    env:
      AWS_REGION: us-east-1
    permissions:
      id-token: write # needed to interact with GitHub's OIDC Token endpoint.
      contents: read
    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Configure AWS credentials
      uses: aws-actions/configure-aws-credentials@master
      with:
        role-to-assume: ${{ secrets.AWS_ROLE_ARN_TO_ASSUME }}
        aws-region: ${{ env.AWS_REGION }}

    - name: Sync files to S3
      run: |
        aws s3 sync ./ s3://${{ secrets.AWS_BUCKET }}
  ```

## Projects using this library
- [pahud/gitpod-workspace](https://github.com/pahud/gitpod-workspace)
- [pahud/github-codespace](https://github.com/pahud/github-codespace)
- [pahud/vscode](https://github.com/pahud/vscode)

## Reference
- [Configuring OpenID Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) from GitHub Docs
- [aripalo/aws-cdk-github-oidc](https://github.com/aripalo/aws-cdk-github-oidc) by [Ari Palo](https://github.com/aripalo)
npm package: @pahud/cdktf-aws-ecs
Description: CDKTF construct library for Amazon ECS
Author: Pahud Hsieh
Latest version: 0.1.92

[![npm version](https://badge.fury.io/js/@pahud%2Fcdktf-aws-ecs.svg)](https://badge.fury.io/js/@pahud%2Fcdktf-aws-ecs)
[![PyPI version](https://badge.fury.io/py/pahud-cdktf-aws-ecs.svg)](https://badge.fury.io/py/pahud-cdktf-aws-ecs)
[![release](https://github.com/pahud/cdktf-aws-ecs/actions/workflows/release.yml/badge.svg)](https://github.com/pahud/cdktf-aws-ecs/actions/workflows/release.yml)
[![construct hub](https://img.shields.io/badge/Construct%20Hub-available-blue)](https://constructs.dev/packages/@pahud/cdktf-aws-ecs)


# cdktf-aws-ecs

CDKTF construct library for Amazon ECS.

## Usage

The following sample creates:

1. A new VPC
1. Amazon ECS cluster
2. Autoscaling Group capacity provider
3. Autoscaling Group with Launch Template


```ts
import { Cluster } from '@pahud/cdktf-aws-ecs';

// create the cluster
const cluster = new Cluster(stack, 'EcsCluster');

// create the ASG capacity with capacity provider
cluster.addAsgCapacity('ASGCapacity', {
  maxCapacity: 10,
  minCapacity: 0,
  desiredCapacity: 2,
});
```

## Existing VPC subnets

To deploy in any existing VPC, specify the `vpcSubnets`.

```ts
cluster.addAsgCapacity('ASGCapacity', {
  vpcSubnets: ['subnet-111','subnet-222','subnet-333' ],
});
```

## Bottlerocket support

To create cluster capacity with Bottlerocket machine image:

```ts
cluster.addAsgCapacity('BRCapacity', {
  machineImage: new BottleRocketImage(stack),
});
```
npm package: @pahud/cdktf-aws-eks
Description: CDKTF construct library for Amazon EKS
Author: Pahud Hsieh
Latest version: 0.3.0

[![npm version](https://badge.fury.io/js/@pahud%2Fcdktf-aws-eks.svg)](https://badge.fury.io/js/@pahud%2Fcdktf-aws-eks)
[![PyPI version](https://badge.fury.io/py/pahud-cdktf-aws-eks.svg)](https://badge.fury.io/py/pahud-cdktf-aws-eks)
[![release](https://github.com/pahud/cdktf-aws-eks/actions/workflows/release.yml/badge.svg)](https://github.com/pahud/cdktf-aws-eks/actions/workflows/release.yml)
[![construct hub](https://img.shields.io/badge/Construct%20Hub-available-blue)](https://constructs.dev/packages/@pahud/cdktf-aws-eks)

# cdktf-aws-eks

CDKTF construct library for Amazon EKS.

## Usage

The following sample creates:

1. A new VPC
1. Amazon EKS cluster(control plane)
2. The default nodegroup with the cluster
3. The 2nd nodegroup with spot instances


```ts
import { Cluster } from '@pahud/cdktf-aws-eks';

// create the cluster and the default nodegroup
const cluster = new Cluster(stack, 'demo-cluster', {
  version: KubernetesVersion.V1_21,
  scalingConfig: { minCapacity: 1 },
});

// create the optional 2nd nodegroup
cluster.addNodeGroup('NG2', {
  scalingConfig: {
    minCapacity: 1,
    maxCapacity: 10,
    desiredCapacity: 5,
  },
  capacityType: CapacityType.SPOT,
  instanceTypes: ['t3.large', 'c5.large', 'm5.large']
})
```

## Existing VPC subnets

To deploy in any existing VPC, specify the `privateSubnets` and `publicSubnets`(if any).

```ts
new Cluster(stack, 'demo-cluster', {
  privateSubnets: ['subnet-111','subnet-222','subnet-333' ],
  publicSubnets: ['subnet-444','subnet-555','subnet-666' ],
  version: KubernetesVersion.V1_21,
});
```