# packages

pkgId: e77ad9a75f623b81c8f47e93eedbfb72edde2064c2a3fb84267600270edd4155
name: python-aws-solutions-constructs.aws-lambda-sagemakerendpoint
arch: src
version: 2.73.0
epoch: 0
release: 1
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-lambda-sagemakerendpoint-2.73.0-1.src.rpm
checksum_type: sha256
summary:
  CDK constructs for defining an interaction between an AWS Lambda function and an Amazon SageMaker inference endpoint.

description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**: | <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span> |
  | :--------------------------- | :------------------------------------------------------------------------------------------------ |
  <div style="height:8px"></div>
  | **Language**                                                                                   | **Package**                                                      |
  | :--------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
  | ![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python             | `aws_solutions_constructs.aws_lambda_sagemakerendpoint`          |
  | ![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript | `@aws-solutions-constructs/aws-lambda-sagemakerendpoint`         |
  | ![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java                   | `software.amazon.awsconstructs.services.lambdasagemakerendpoint` |

  This AWS Solutions Construct implements an AWS Lambda function connected to an Amazon Sagemaker Endpoint.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps, Duration } from 'aws-cdk-lib';
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  import { LambdaToSagemakerEndpoint, LambdaToSagemakerEndpointProps } from '@aws-solutions-constructs/aws-lambda-sagemakerendpoint';
  const constructProps: LambdaToSagemakerEndpointProps = {
    modelProps: {
      primaryContainer: {
        image: '<AccountId>.dkr.ecr.<region>.amazonaws.com/linear-learner:latest',
        modelDataUrl: "s3://<bucket-name>/<prefix>/model.tar.gz",
      },
    },
    lambdaFunctionProps: {
      runtime: lambda.Runtime.PYTHON_3_8,
      code: lambda.Code.fromAsset(`lambda`),
      handler: 'index.handler',
      timeout: Duration.minutes(5),
      memorySize: 128,
    },
  };
  new LambdaToSagemakerEndpoint(this, 'LambdaToSagemakerEndpointPattern', constructProps);
  ```
  Python
  ```python
  from constructs import Construct
  from aws_solutions_constructs.aws_lambda_sagemakerendpoint import LambdaToSagemakerEndpoint, LambdaToSagemakerEndpointProps
  from aws_cdk import (
      aws_lambda as _lambda,
      aws_sagemaker as sagemaker,
      Duration,
      Stack
  )
  from constructs import Construct
  LambdaToSagemakerEndpoint(
      self, 'LambdaToSagemakerEndpointPattern',
      model_props=sagemaker.CfnModelProps(
          primary_container=sagemaker.CfnModel.ContainerDefinitionProperty(
              image='<AccountId>.dkr.ecr.<region>.amazonaws.com/linear-learner:latest',
              model_data_url='s3://<bucket-name>/<prefix>/model.tar.gz',
          ),
          execution_role_arn="executionRoleArn"
      ),
      lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler',
          timeout=Duration.minutes(5),
          memory_size=128
      ))
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.Duration;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awscdk.services.sagemaker.*;
  import software.amazon.awsconstructs.services.lambdasagemakerendpoint.*;
  new LambdaToSagemakerEndpoint(this, "LambdaToSagemakerEndpointPattern",
          new LambdaToSagemakerEndpointProps.Builder()
                  .modelProps(new CfnModelProps.Builder()
                          .primaryContainer(new CfnModel.ContainerDefinitionProperty.Builder()
                                  .image("<AccountId>.dkr.ecr.<region>.amazonaws.com/linear_learner:latest")
                                  .modelDataUrl("s3://<bucket_name>/<prefix>/model.tar.gz")
                                  .build())
                          .executionRoleArn("executionRoleArn")
                          .build())
                  .lambdaFunctionProps(new FunctionProps.Builder()
                          .runtime(Runtime.NODEJS_16_X)
                          .code(Code.fromAsset("lambda"))
                          .handler("index.handler")
                          .timeout(Duration.minutes(5))
                          .build())
                  .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|An optional, existing Lambda function to be used instead of the default function. Providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|Optional user-provided properties to override the default properties for the Lambda function.|
  |existingSagemakerEndpointObj?|[`sagemaker.CfnEndpoint`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sagemaker.CfnEndpoint.html)|An optional, existing SageMaker Endpoint to be used. Providing both this and `endpointProps?` will cause an error.|
  |modelProps?|[`sagemaker.CfnModelProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sagemaker.CfnModelProps.html) | `any`|User-provided properties to override the default properties for the SageMaker Model. At least `modelProps?.primaryContainer` must be provided to create a model. By default, the pattern will create a role with the minimum required permissions, but the client can provide a custom role with additional capabilities using `modelProps?.executionRoleArn`.|
  |endpointConfigProps?|[`sagemaker.CfnEndpointConfigProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sagemaker.CfnEndpointConfigProps.html)|Optional user-provided properties to override the default properties for the SageMaker Endpoint Config. |
  |endpointProps?|[`sagemaker.CfnEndpointProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sagemaker.CfnEndpointProps.html)| Optional user-provided properties to override the default properties for the SageMaker Endpoint Config. |
  |existingVpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An optional, existing VPC into which this construct should be deployed. When deployed in a VPC, the Lambda function and Sagemaker Endpoint will use ENIs in the VPC to access network resources. An Interface Endpoint will be created in the VPC for Amazon SageMaker Runtime, and Amazon S3 VPC Endpoint. If an existing VPC is provided, the `deployVpc?` property cannot be `true`.|
  |vpcProps?|[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the Construct, so any values for those properties supplied here will be overridden. If `deployVpc?` is not `true` then this property will be ignored.|
  |deployVpc?|`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.|
  |sagemakerEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the name of the SageMaker endpoint. Default: SAGEMAKER_ENDPOINT_NAME |

  | **Name**                 | **Type**                                                                                                                       | **Description**                                                                                                                 |
  | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
  | lambdaFunction           | [`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)                         | Returns an instance of the Lambda function created by the pattern.                                                              |
  | sagemakerEndpoint        | [`sagemaker.CfnEndpoint`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sagemaker.CfnEndpoint.html)             | Returns an instance of the SageMaker Endpoint created by the pattern.                                                           |
  | sagemakerEndpointConfig? | [`sagemaker.CfnEndpointConfig`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sagemaker.CfnEndpointConfig.html) | Returns an instance of the SageMaker EndpointConfig created by the pattern, if `existingSagemakerEndpointObj?` is not provided. |
  | sagemakerModel?          | [`sagemaker.CfnModel`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sagemaker.CfnModel.html)                   | Returns an instance of the SageMaker Model created by the pattern, if `existingSagemakerEndpointObj?` is not provided.          |
  | vpc?                     | `ec2.IVpc`                                                                                                                     | Returns an instance of the VPC created by the pattern, if `deployVpc?` is `true`, or `existingVpc?` is provided.                |

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure limited privilege access IAM role for Lambda function
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Allow the function to invoke the SageMaker endpoint for Inferences
  * Configure the function to access resources in the VPC, where the SageMaker endpoint is deployed
  * Enable X-Ray Tracing
  * Set environment variables:
    * (default) SAGEMAKER_ENDPOINT_NAME
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions).

  * Configure limited privilege to create SageMaker resources
  * Deploy SageMaker model, endpointConfig, and endpoint
  * Configure the SageMaker endpoint to be deployed in a VPC
  * Deploy S3 VPC Endpoint and SageMaker Runtime VPC Interface


pkgId: 5a98578d722ec3b01bddaa44485ea814529545912cf738482696c6c23a411857
name: python-aws-solutions-constructs.aws-lambda-secretsmanager
arch: src
version: 2.73.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an AWS Lambda function and AWS Secrets Manager.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-lambda-secretsmanager-2.73.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_lambda_secretsmanager`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-lambda-secretsmanager`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.lambdasecretsmanager`|

  This AWS Solutions Construct implements the AWS Lambda function and AWS Secrets Manager secret with the least privileged permissions.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { LambdaToSecretsmanagerProps, LambdaToSecretsmanager } from '@aws-solutions-constructs/aws-lambda-secretsmanager';
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  const constructProps: LambdaToSecretsmanagerProps = {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      code: lambda.Code.fromAsset(`lambda`),
      handler: 'index.handler'
    },
  };
  new LambdaToSecretsmanager(this, 'test-lambda-secretsmanager-stack', constructProps);
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_lambda_secretsmanager import LambdaToSecretsmanagerProps, LambdaToSecretsmanager
  from aws_cdk import (
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  LambdaToSecretsmanager(
      self, 'test-lambda-secretsmanager-stack',
      lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler'
      )
  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.lambdasecretsmanager.*;
  new LambdaToSecretsmanager(this, "test-lambda-secretsmanager-stack", new LambdaToSecretsmanagerProps.Builder()
          .lambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("lambda"))
                  .handler("index.handler")
                  .build())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|User provided props to override the default props for the Lambda function.|
  |secretProps?|[`secretsmanager.SecretProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager.SecretProps.html)|Optional user provided props to override the default props for Secrets Manager|
  |existingSecretObj?|[`secretsmanager.Secret`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager.Secret.html)|Existing instance of Secrets Manager Secret object, If this is set then the secretProps is ignored|
  |grantWriteAccess?|`string`|Optional Access granted to the Lambda function for the secret. 'Read' or 'ReadWrite". Default is "Read"
  |secretEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the ARN of the secret. Default: SECRET_ARN. |
  |existingVpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An optional, existing VPC into which this pattern should be deployed. When deployed in a VPC, the Lambda function will use ENIs in the VPC to access network resources and an Interface Endpoint will be created in the VPC for AWS Secrets Manager. If an existing VPC is provided, the `deployVpc` property cannot be `true`. This uses `ec2.IVpc` to allow clients to supply VPCs that exist outside the stack using the [`ec2.Vpc.fromLookup()`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html#static-fromwbrlookupscope-id-options) method.|
  |vpcProps?|[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the pattern, so any values for those properties supplied here will be overridden. If `deployVpc` is not `true` then this property will be ignored.|
  |deployVpc?|`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of lambda.Function created by the construct|
  |secret|[`secretsmanager.Secret`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager.Secret.html)|Returns an instance of secretsmanager.Secret created by the construct|
  |vpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|Returns an interface on the VPC used by the pattern (if any). This may be a VPC created by the pattern or the VPC supplied to the pattern constructor.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure limited privilege access IAM role for Lambda function
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Enable X-Ray Tracing
  * Set Environment Variables
    * (default) SECRET_ARN containing the ARN of the secret as return by CDK [secretArn property](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager.Secret.html#secretarn).
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)

  * Enable read-only access for the associated AWS Lambda Function
  * Creates a new Secret
    * (default) random name
    * (default) random value
  * Retain the Secret when deleting the CloudFormation stack


pkgId: 9f6160f44961e4a2d1249b4a48228b7f48753c2d92f1e336d2d00093686adfc3
name: python-aws-solutions-constructs.aws-lambda-sns
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an AWS Lambda function and an Amazon SNS topic.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-lambda-sns-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_lambda_sns`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-lambda-sns`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.lambdasns`|

  This AWS Solutions Construct implements an AWS Lambda function connected to an Amazon SNS topic.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { LambdaToSns, LambdaToSnsProps } from "@aws-solutions-constructs/aws-lambda-sns";
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  new LambdaToSns(this, 'test-lambda-sns', {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset(`lambda`)
    }
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_lambda_sns import LambdaToSns
  from aws_cdk import (
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  LambdaToSns(
      self, 'test-lambda-sns-stack',
      lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler'
      )
  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.lambdasns.*;
  new LambdaToSns(this, "test-lambda-sns-stack", new LambdaToSnsProps.Builder()
          .lambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("lambda"))
                  .handler("index.handler")
                  .build())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|User provided props to override the default props for the Lambda function.|
  |existingTopicObj?|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of SNS Topic object, providing both this and `topicProps` will cause an error.|
  |topicProps?|[`sns.TopicProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.TopicProps.html)|Optional user provided properties to override the default properties for the SNS topic.|
  |existingVpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An optional, existing VPC into which this pattern should be deployed. When deployed in a VPC, the Lambda function will use ENIs in the VPC to access network resources and an Interface Endpoint will be created in the VPC for Amazon SNS. If an existing VPC is provided, the `deployVpc` property cannot be `true`. This uses `ec2.IVpc` to allow clients to supply VPCs that exist outside the stack using the [`ec2.Vpc.fromLookup()`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html#static-fromwbrlookupscope-id-options) method.|
  |vpcProps?|[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the pattern, so any values for those properties supplied here will be overridden. If `deployVpc` is not `true` then this property will be ignored.|
  |deployVpc?|`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.|
  |topicArnEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the arn of the topic. Default: SNS_TOPIC_ARN |
  |topicNameEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the name of the topic. Default: SNS_TOPIC_NAME |
  |enableEncryptionWithCustomerManagedKey?|`boolean`|If no key is provided, this flag determines whether the SNS Topic is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: topicProps.masterKey, encryptionKey or encryptionKeyProps.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional, imported encryption key to encrypt the SNS Topic with.|
  |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SNS Topic with.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the Lambda function created by the pattern.|
  |snsTopic|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.Topic.html)|Returns an instance of the SNS topic created by the pattern.|
  |vpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|Returns an interface on the VPC used by the pattern (if any). This may be a VPC created by the pattern or the VPC supplied to the pattern constructor.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure limited privilege access IAM role for Lambda function to access the Firehose Delivery Stream
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Enable X-Ray Tracing
  * Set Environment Variables
    * (default) SNS_TOPIC_NAME
    * (default) SNS_TOPIC_ARN
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)

  * Configure least privilege access permissions for SNS Topic
  * Enable server-side encryption forSNS Topic using AWS managed KMS Key
  * Enforce encryption of data in transit


pkgId: 562d12bfd949cde3128219469552d4fe88338c2517525a399d0f4ac3e0e2eb1e
name: python-aws-solutions-constructs.aws-lambda-sqs
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an AWS Lambda function and an Amazon SQS queue.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-lambda-sqs-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_lambda_sqs`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-lambda-sqs`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.lambdasqs`|

  This AWS Solutions Construct implements an AWS Lambda function connected to an Amazon SQS queue.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { LambdaToSqs, LambdaToSqsProps } from "@aws-solutions-constructs/aws-lambda-sqs";
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  new LambdaToSqs(this, 'LambdaToSqsPattern', {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset(`lambda`)
    }
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_lambda_sqs import LambdaToSqs
  from aws_cdk import (
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  LambdaToSqs(
      self, 'test-lambda-sqs-stack',
      lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler'
      )
  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.lambdasqs.*;
  new LambdaToSqs(this, "test-lambda-sqs-stack", new LambdaToSqsProps.Builder()
          .lambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("lambda"))
                  .handler("index.handler")
                  .build())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|An optional, existing Lambda function to be used instead of the default function. Providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|Optional user-provided properties to override the default properties for the Lambda function. |
  |existingQueueObj?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|An optional, existing SQS queue to be used instead of the default queue. Providing both this and `queueProps` will cause an error.|
  |queueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user-provided properties to override the default properties for the SQS queue.|
  |enableQueuePurging?|`boolean`|Whether to grant additional permissions to the Lambda function enabling it to purge the SQS queue. Defaults to `false`.|
  |deployDeadLetterQueue?|`boolean`|Whether to create a secondary queue to be used as a dead letter queue. Defaults to `true`.|
  |deadLetterQueueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user-provided props to override the default props for the dead letter queue. Only used if the `deployDeadLetterQueue` property is set to true.|
  |maxReceiveCount?|`number`|The number of times a message can be unsuccessfully dequeued before being moved to the dead letter queue. Defaults to `15`.|
  |existingVpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An optional, existing VPC into which this pattern should be deployed. When deployed in a VPC, the Lambda function will use ENIs in the VPC to access network resources and an Interface Endpoint will be created in the VPC for Amazon SQS. If an existing VPC is provided, the `deployVpc` property cannot be `true`. This uses `ec2.IVpc` to allow clients to supply VPCs that exist outside the stack using the [`ec2.Vpc.fromLookup()`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html#static-fromwbrlookupscope-id-options) method.|
  |vpcProps?|[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the pattern, so any values for those properties supplied here will be overridden. If `deployVpc` is not `true` then this property will be ignored.|
  |deployVpc?|`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.|
  |queueEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the URL of the queue. Default: SQS_QUEUE_URL |
  |enableEncryptionWithCustomerManagedKey?|`boolean`|If no key is provided, this flag determines whether the queue is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: queueProps.encryptionMasterKey, encryptionKey or encryptionKeyProps.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional, imported encryption key to encrypt the SQS Queue with.|
  |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SQS queue with.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the Lambda function created by the pattern.|
  |sqsQueue|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the SQS queue created by the pattern. |
  |deadLetterQueue?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the dead letter queue created by the pattern, if one is deployed.|
  |vpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|Returns an interface on the VPC used by the pattern (if any). This may be a VPC created by the pattern or the VPC supplied to the pattern constructor.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure limited privilege access IAM role for Lambda function.
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function.
  * Allow the function to send messages only to the queue (purging can be enabled using the `enableQueuePurge` property).
  * Enable X-Ray Tracing
  * Set Environment Variables
    * SQS_QUEUE_URL
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)

  * Deploy SQS dead-letter queue for the source SQS Queue.
  * Enable server-side encryption for source SQS Queue using AWS Managed KMS Key.
  * Enforce encryption of data in transit


pkgId: 31ac367d844b65abb2d796485ceac63c37188831fb2bf0aed5e8a43537faf64b
name: python-aws-solutions-constructs.aws-lambda-sqs-lambda
arch: src
version: 2.72.0
epoch: 0
release: 1
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-lambda-sqs-lambda-2.72.0-1.src.rpm
checksum_type: sha256
summary:
  CDK construct that provisions (1) an AWS Lambda function that is configured to send messages to a queue; (2) an Amazon SQS queue; and (3) an AWS Lambda function configured to consume messages from the queue.

description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_lambda_sqs_lambda`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-lambda-sqs-lambda`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.lambdasqslambda`|

  This AWS Solutions Construct implements (1) an AWS Lambda function that is configured to send messages to a queue; (2) an Amazon SQS queue; and (3) an AWS Lambda function configured to consume messages from the queue.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { LambdaToSqsToLambda, LambdaToSqsToLambdaProps } from "@aws-solutions-constructs/aws-lambda-sqs-lambda";
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  new LambdaToSqsToLambda(this, 'LambdaToSqsToLambdaPattern', {
    producerLambdaFunctionProps: {
        runtime: lambda.Runtime.NODEJS_16_X,
        handler: 'index.handler',
        code: lambda.Code.fromAsset(`producer-lambda`)
    },
    consumerLambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset(`consumer-lambda`)
    }
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_lambda_sqs_lambda import LambdaToSqsToLambda
  from aws_cdk import (
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  LambdaToSqsToLambda(
      self, 'LambdaToSqsToLambdaPattern',
      producer_lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('producer_lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler'
      ),
      consumer_lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('consumer_lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler'
      )
  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.lambdasqslambda.*;
  new LambdaToSqsToLambda(this, "LambdaToSqsToLambdaPattern", new LambdaToSqsToLambdaProps.Builder()
          .producerLambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("producer-lambda"))
                  .handler("index.handler")
                  .build())
          .consumerLambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("consumer-lambda"))
                  .handler("index.handler")
                  .build())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingProducerLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|An optional, existing Lambda function to be used instead of the default function for sending messages to the queue. Providing both this and `producerLambdaFunctionProps` will cause an error. |
  |producerLambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|Optional user-provided properties to override the default properties for the producer Lambda function. |
  |existingQueueObj?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|An optional, existing SQS queue to be used instead of the default queue. Providing both this and `queueProps` will cause an error.|
  |queueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user-provided properties to override the default properties for the SQS queue. Providing both this and `existingQueueObj` will cause an error. |
  |deployDeadLetterQueue?|`boolean`|Whether to create a secondary queue to be used as a dead letter queue. Defaults to `true`.|
  |deadLetterQueueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user-provided props to override the default props for the dead letter queue. Only used if the `deployDeadLetterQueue` property is set to `true`.|
  |maxReceiveCount?|`number`|The number of times a message can be unsuccessfully dequeued before being moved to the dead letter queue. Defaults to `15`.|
  |existingConsumerLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|An optional, existing Lambda function to be used instead of the default function for receiving/consuming messages from the queue. Providing both this and `consumerLambdaFunctionProps` will cause an error. |
  |consumerLambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|Optional user-provided properties to override the default properties for the consumer Lambda function.|
  |queueEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the URL of the queue. Default: SQS_QUEUE_URL |
  |sqsEventSourceProps?| [`SqsEventSourceProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda_event_sources.SqsEventSourceProps.html)|Optional user provided properties for the queue event source.|
  |existingVpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An optional, existing VPC into which this pattern should be deployed. When deployed in a VPC, the Lambda function will use ENIs in the VPC to access network resources and an Interface Endpoint will be created in the VPC for Amazon SQS. If an existing VPC is provided, the `deployVpc` property cannot be `true`. This uses `ec2.IVpc` to allow clients to supply VPCs that exist outside the stack using the [`ec2.Vpc.fromLookup()`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html#static-fromwbrlookupscope-id-options) method.|
  |vpcProps?|[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the pattern, so any values for those properties supplied here will be overridden. If `deployVpc` is not `true` then this property will be ignored.|
  |deployVpc?|`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |producerLambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the producer Lambda function created by the pattern.|
  |sqsQueue|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the SQS queue created by the pattern. |
  |deadLetterQueue?|[`sqs.Queue \| undefined`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the dead letter queue created by the pattern, if one is deployed.|
  |consumerLambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the consumer Lambda function created by the pattern.|
  |vpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|Returns an interface on the VPC used by the pattern (if any). This may be a VPC created by the pattern or the VPC supplied to the pattern constructor.|

  Out-of-the-box implementation of this Construct (without any overridden properties) will adhere to the following defaults:

  * Configure limited privilege access IAM role for Lambda functions.
  * Enable reusing connections with Keep-Alive for NodeJs Lambda functions.
  * Enable X-Ray Tracing
  * Set Environment Variables
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)

  * Deploy a dead letter queue for the primary queue.
  * Enable server-side encryption for the primary queue using an AWS Managed KMS Key.
  * Enforce encryption of data in transit


pkgId: aa663654cce710cb69dd79e4583a13021bb3b874cdd3940784d59cbcc048adcb
name: python-aws-solutions-constructs.aws-lambda-ssmstringparameter
arch: src
version: 2.73.0
epoch: 0
release: 1
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-lambda-ssmstringparameter-2.73.0-1.src.rpm
checksum_type: sha256
summary:
  CDK constructs for defining an interaction between an AWS Lambda function and AWS Systems Manager Parameter Store String parameter

description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_lambda_ssm_string_parameter`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-lambda-ssmstringparameter`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.lambdassmstringparameter`|

  This AWS Solutions Construct implements the AWS Lambda function and AWS Systems Manager Parameter Store String parameter with the least privileged permissions.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { LambdaToSsmstringparameterProps,  LambdaToSsmstringparameter } from '@aws-solutions-constructs/aws-lambda-ssmstringparameter';
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  const constructProps: LambdaToSsmstringparameterProps = {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      code: lambda.Code.fromAsset(`lambda`),
      handler: 'index.handler'
    },
    stringParameterProps: { stringValue: "test-string-value" }
  };
  new LambdaToSsmstringparameter(this, 'test-lambda-ssmstringparameter-stack', constructProps);
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_lambda_ssmstringparameter import LambdaToSsmstringparameter
  from aws_cdk import (
      aws_lambda as _lambda,
      aws_ssm as ssm,
      Stack
  )
  from constructs import Construct
  LambdaToSsmstringparameter(
      self, 'test-lambda-ssmstringparameter-stack',
      lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler'
      ),
      string_parameter_props=ssm.StringParameterProps(
          string_value="test-string-value")
  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awscdk.services.ssm.*;
  import software.amazon.awsconstructs.services.lambdassmstringparameter.*;
  new LambdaToSsmstringparameter(this, "test-lambda-ssmstringparameter-stack",
          new LambdaToSsmstringparameterProps.Builder()
                  .lambdaFunctionProps(new FunctionProps.Builder()
                          .runtime(Runtime.NODEJS_16_X)
                          .code(Code.fromAsset("lambda"))
                          .handler("index.handler")
                          .build())
                  .stringParameterProps(new StringParameterProps.Builder()
                          .stringValue("test-string-value")
                          .build())
                  .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|User provided props to override the default props for the Lambda function.|
  |existingStringParameterObj?|[`ssm.StringParameter`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html)|Existing instance of SSM String parameter object, providing both this and `stringParameterProps` will cause an error|
  |stringParameterProps?|[`ssm.StringParameterProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameterProps.html)|Optional user provided props to override the default props for SSM String parameter. If existingStringParameterObj is not set stringParameterProps is required. The only supported [`ssm.StringParameterProps.type`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameterProps.html#type) is [`STRING`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.ParameterType.html#string) if a different value is provided it will be overridden.|
  |stringParameterEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the name of the parameter. Default: SSM_STRING_PARAMETER_NAME |
  |existingVpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An optional, existing VPC into which this pattern should be deployed. When deployed in a VPC, the Lambda function will use ENIs in the VPC to access network resources and an Interface Endpoint will be created in the VPC for AWS Systems Manager Parameter. If an existing VPC is provided, the `deployVpc` property cannot be `true`. This uses `ec2.IVpc` to allow clients to supply VPCs that exist outside the stack using the [`ec2.Vpc.fromLookup()`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html#static-fromwbrlookupscope-id-options) method.|
  |vpcProps?|[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the pattern, so any values for those properties supplied here will be overridden. If `deployVpc` is not `true` then this property will be ignored.|
  |deployVpc?|`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.|
  |stringParameterPermissions|`string`|Optional SSM String parameter permissions to grant to the Lambda function. One of the following may be specified: "Read", "ReadWrite".

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of lambda.Function created by the construct|
  |stringParameter|[`ssm.StringParameter`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ssm.StringParameter.html)|Returns an instance of ssm.StringParameter created by the construct|
  |vpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|Returns an interface on the VPC used by the pattern (if any). This may be a VPC created by the pattern or the VPC supplied to the pattern constructor.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure limited privilege access IAM role for Lambda function
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Enable X-Ray Tracing
  * Set Environment Variables
    * (default) SSM_STRING_PARAMETER_NAME
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)

  * Enable read-only access for the associated AWS Lambda Function
  * Creates a new SSM String parameter with the values provided
  * Retain the SSM String parameter when deleting the CloudFormation stack


pkgId: 01bc023f74bec2fb9a4db9759691ade97ec66a39534924c5f9e522e59262a985
name: python-aws-solutions-constructs.aws-lambda-stepfunctions
arch: src
version: 2.73.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an AWS Lambda function and an AWS Step Function.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-lambda-stepfunctions-2.73.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_lambda_stepfunctions`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-lambda-stepfunctions`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.lambdastepfunctions`|

  This AWS Solutions Construct implements an AWS Lambda function connected to an AWS Step Functions.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { LambdaToStepfunctions } from '@aws-solutions-constructs/aws-lambda-stepfunctions';
  import * as stepfunctions from 'aws-cdk-lib/aws-stepfunctions';
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  const startState = new stepfunctions.Pass(this, 'StartState');
  new LambdaToStepfunctions(this, 'LambdaToStepfunctionsPattern', {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset(`lambda`)
    },
    stateMachineProps: {
      definition: startState
    }
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_lambda_stepfunctions import LambdaToStepfunctions
  from aws_cdk import (
      aws_lambda as _lambda,
      aws_stepfunctions as stepfunctions,
      Stack
  )
  from constructs import Construct
  start_state = stepfunctions.Pass(self, 'start_state')
  LambdaToStepfunctions(
      self, 'test-lambda-stepfunctions-stack',
      lambda_function_props=_lambda.FunctionProps(
          code=_lambda.Code.from_asset('lambda'),
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler='index.handler'
      ),
      state_machine_props=stepfunctions.StateMachineProps(
          definition=start_state)
  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awscdk.services.stepfunctions.*;
  import software.amazon.awsconstructs.services.lambdastepfunctions.*;
  final Pass startState = new Pass(this, "StartState");
  new LambdaToStepfunctions(this, "test-lambda-stepfunctions-stack",
          new LambdaToStepfunctionsProps.Builder()
                  .lambdaFunctionProps(new FunctionProps.Builder()
                          .runtime(Runtime.NODEJS_16_X)
                          .code(Code.fromAsset("lambda"))
                          .handler("index.handler")
                          .build())
                  .stateMachineProps(new StateMachineProps.Builder()
                          .definition(startState)
                          .build())
                  .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|User provided props to override the default props for the Lambda function.|
  |stateMachineProps|[`sfn.StateMachineProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_stepfunctions.StateMachineProps.html)|User provided props for the sfn.StateMachine.|
  |createCloudWatchAlarms|`boolean`|Whether to create recommended CloudWatch alarms|
  |logGroupProps?|[`logs.LogGroupProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroupProps.html)|User provided props to override the default props for for the CloudWatchLogs LogGroup.|
  |stateMachineEnvironmentVariableName?|`string`|Optional Name for the Lambda function environment variable set to the ARN of the state machine. Default: STATE_MACHINE_ARN |
  |existingVpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|An optional, existing VPC into which this pattern should be deployed. When deployed in a VPC, the Lambda function will use ENIs in the VPC to access network resources and an Interface Endpoint will be created in the VPC for Amazon Step Functions. If an existing VPC is provided, the `deployVpc` property cannot be `true`. This uses `ec2.IVpc` to allow clients to supply VPCs that exist outside the stack using the [`ec2.Vpc.fromLookup()`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html#static-fromwbrlookupscope-id-options) method.|
  |vpcProps?|[`ec2.VpcProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html)|Optional user-provided properties to override the default properties for the new VPC. `enableDnsHostnames`, `enableDnsSupport`, `natGateways` and `subnetConfiguration` are set by the pattern, so any values for those properties supplied here will be overridden. If `deployVpc` is not `true` then this property will be ignored.|
  |deployVpc?|`boolean`|Whether to create a new VPC based on `vpcProps` into which to deploy this pattern. Setting this to true will deploy the minimal, most private VPC to run the pattern:<ul><li> One isolated subnet in each Availability Zone used by the CDK program</li><li>`enableDnsHostnames` and `enableDnsSupport` will both be set to true</li></ul>If this property is `true` then `existingVpc` cannot be specified. Defaults to `false`.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the Lambda function created by the pattern.|
  |stateMachine|[`sfn.StateMachine`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_stepfunctions.StateMachine.html)|Returns an instance of StateMachine created by the construct.|
  |stateMachineLogGroup|[`logs.ILogGroup`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.ILogGroup.html)|Returns an instance of the ILogGroup created by the construct for StateMachine|
  |cloudwatchAlarms?|[`cloudwatch.Alarm[]`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudwatch.Alarm.html)|Returns a list of alarms created by the construct.|
  |vpc?|[`ec2.IVpc`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html)|Returns an interface on the VPC used by the pattern (if any). This may be a VPC created by the pattern or the VPC supplied to the pattern constructor.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure limited privilege access IAM role for Lambda function
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Enable X-Ray Tracing
  * Set Environment Variables
    * (default) STATE_MACHINE_ARN
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)

  * Enable CloudWatch logging for API Gateway
  * Deploy best practices CloudWatch Alarms for the Step Functions


pkgId: ca22801ec8c2afe80a10d90dfa3c54f4b44a7a5bc29716d3f9b3336f86a9de20
name: python-aws-solutions-constructs.aws-openapigateway-lambda
arch: src
version: 2.74.0
epoch: 0
release: 1
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-openapigateway-lambda-2.74.0-1.src.rpm
checksum_type: sha256
summary:
  CDK constructs for defining an interaction between an OpenAPI-defined API Gateway and one or more Lambda functions.

description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_openapigateway_lambda`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-openapigateway-lambda`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.openapigatewaylambda`|

  This AWS Solutions Construct implements an Amazon API Gateway REST API defined by an OpenAPI specification file connected to an AWS Lambda function.
  Here is a minimal deployable pattern definition.
  **NOTE** The referenced `openapi/apiDefinition.yaml` openapi definition file and `messages-lambda` lambda package directory for the three code samples below can both be found under this constructs `test` folder (`<repository_root>/source/patterns/@aws-solutions-constructs/aws-openapigateway-lambda/test`)
  Typescript
  ```python
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { Construct } from 'constructs';
  import { OpenApiGatewayToLambda } from '@aws-solutions-constructs/aws-openapigateway-lambda';
  import { Asset } from 'aws-cdk-lib/aws-s3-assets';
  import * as path from 'path';
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  const apiDefinitionAsset = new Asset(this, 'ApiDefinitionAsset', {
    path: path.join(__dirname, 'openapi/apiDefinition.yaml')
  });
  new OpenApiGatewayToLambda(this, 'OpenApiGatewayToLambda', {
    apiDefinitionAsset,
    apiIntegrations: [
      {
        id: 'MessagesHandler',
        lambdaFunctionProps: {
          runtime: lambda.Runtime.NODEJS_18_X,
          handler: 'index.handler',
          code: lambda.Code.fromAsset(`${__dirname}/messages-lambda`),
        }
      }
    ]
  });
  ```
  Python
  ```python
  from aws_cdk import (
      Stack,
      aws_s3_assets as s3_assets,
      aws_lambda as lambda_,
  )
  from constructs import Construct
  from aws_solutions_constructs.aws_openapigateway_lambda import OpenApiGatewayToLambda, ApiIntegration
  class TestStack(Stack):
      def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
          super().__init__(scope, construct_id, **kwargs)
          api_definition_asset = s3_assets.Asset(self, "ApiDefinitionAsset", path="./openapi/apiDefinition.yaml")
          api_integration = ApiIntegration(id="MessagesHandler", lambda_function_props={
              "runtime": lambda_.Runtime.NODEJS_18_X,
              "handler": "index.handler",
              "code": lambda_.Code.from_asset("./messages-lambda")
          })
          openapigateway_to_lambda = OpenApiGatewayToLambda(self,
              id="OpenApiGatewayToLambda",
              api_integrations=[api_integration],
              api_definition_asset=api_definition_asset
          )
  ```
  Java
  ```java
  import software.amazon.awscdk.services.lambda.Code;
  import software.amazon.awscdk.services.lambda.FunctionProps;
  import software.amazon.awscdk.services.s3.assets.Asset;
  import software.amazon.awscdk.services.s3.assets.AssetProps;
  import software.amazon.awsconstructs.services.openapigatewaylambda.ApiIntegration;
  import software.amazon.awsconstructs.services.openapigatewaylambda.OpenApiGatewayToLambda;
  import software.amazon.awsconstructs.services.openapigatewaylambda.OpenApiGatewayToLambdaProps;
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import java.util.Collections;
  import static software.amazon.awscdk.services.lambda.Runtime.NODEJS_18_X;
  final Asset apiDefinitionAsset = new Asset(this, "ApiDefinition", AssetProps.builder().path("openapi/apiDefinition.yaml").build());
  final ApiIntegration apiIntegration = ApiIntegration.builder()
      .id("MessagesHandler")
      .lambdaFunctionProps(new FunctionProps.Builder()
          .runtime(NODEJS_18_X)
          .code(Code.fromAsset("messages-lambda"))
          .handler("index.handler")
          .build())
      .build();
  new OpenApiGatewayToLambda(this, "OpenApiGatewayToLambda", OpenApiGatewayToLambdaProps.builder()
      .apiDefinitionAsset(apiDefinitionAsset)
      .apiIntegrations(Collections.singletonList(apiIntegration))
      .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |apiGatewayProps?|[`apigateway.RestApiBaseProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApiBaseProps.html)|Optional user-provided props to override the default props for the API.|
  |apiDefinitionBucket?|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|S3 Bucket where the OpenAPI spec file is located. When specifying this property, `apiDefinitionKey` must also be specified.|
  |apiDefinitionKey?|`string`|S3 Object name of the OpenAPI spec file. When specifying this property, `apiDefinitionBucket` must also be specified.|
  |apiDefinitionAsset?|[`aws_s3_assets.Asset`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3_assets.Asset.html)|Local file asset of the OpenAPI spec file.|
  |apiDefinitionJson?|any|OpenAPI specification represented in a JSON object to be embedded in the CloudFormation template. IMPORTANT - Including the spec in the template introduces a risk of the template growing too big, but there are some use cases that require an embedded spec. Unless your use case explicitly requires an embedded spec you should pass your spec as an S3 asset.|
  |apiIntegrations|`ApiIntegration[]`|One or more key-value pairs that contain an id for the api integration and either an existing lambda function or an instance of the LambdaProps. Please see the `Overview of how the OpenAPI file transformation works` section below for more usage details.|
  |logGroupProps?|[`logs.LogGroupProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroupProps.html)|User provided props to override the default props for for the CloudWatchLogs LogGroup.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |apiLambdaFunctions|`ApiLambdaFunction[]`|Returns an array of ApiLambdaFunction objects, where each has an `id` of the `apiIntegration` and the corresponding `lambda.Function` that it maps to.|
  |apiGateway|[`api.SpecRestApi`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.SpecRestApi.html)|Returns an instance of the API Gateway REST API created by the pattern.|
  |apiGatewayCloudWatchRole?|[`iam.Role`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam.Role.html)|Returns an instance of the iam.Role created by the construct for API Gateway for CloudWatch access.|
  |apiGatewayLogGroup|[`logs.LogGroup`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroup.html)|Returns an instance of the LogGroup created by the construct for API Gateway access logging to CloudWatch.|

  This construct automatically transforms an incoming OpenAPI Definition (residing locally or in S3) by auto-populating the `uri` fields of the `x-amazon-apigateway-integration` integrations with the resolved value of the backing lambda functions. It does so by allowing the user to specify the `apiIntegrations` property and then correlates it with the api definition.
  Looking at an example - a user creates an instantiation of `apiIntegrations` that specifies one integration named `MessagesHandler` that passes in a set of `lambda.FunctionProps` and a second integration named `PhotosHandler` that passes in an existing `lambda.Function`:
  ```python
  const apiIntegrations: ApiIntegration[] = [
    {
      id: 'MessagesHandler',
      lambdaFunctionProps: {
        runtime: lambda.Runtime.NODEJS_18_X,
        handler: 'index.handler',
        code: lambda.Code.fromAsset(`${__dirname}/messages-lambda`),
      }
    },
    {
      id: 'PhotosHandler',
      existingLambdaObj: new lambda.Function(this, 'PhotosLambda', {
        runtime: lambda.Runtime.NODEJS_18_X,
        handler: 'index.handler',
        code: lambda.Code.fromAsset(`${__dirname}/photos-lambda`),
      })
    }
  ]
  ```
  And a corresponding api definition with `GET` and `POST` methods on a `/messages` resource and a `GET` method on a `/photos` resource.
  ```
  openapi: "3.0.1"
  info:
    title: "api"
    version: "2023-02-20T20:46:08Z"
  paths:
    /messages:
      get:
        x-amazon-apigateway-integration:
          httpMethod: "POST"
          uri: MessagesHandler
          passthroughBehavior: "when_no_match"
          type: "aws_proxy"
      post:
        x-amazon-apigateway-integration:
          httpMethod: "POST"
          uri: MessagesHandler
          passthroughBehavior: "when_no_match"
          type: "aws_proxy"
    /photos:
      get:
        x-amazon-apigateway-integration:
          httpMethod: "POST"
          uri: PhotosHandler
          passthroughBehavior: "when_no_match"
          type: "aws_proxy"
  ```
  When the construct is created or updated, it will overwrite the `MessagesHandler` string with the fully resolved lambda proxy uri of the `MessagesHandlerLambdaFunction`, e.g., `arn:${Aws.PARTITION}:apigateway:${Aws.REGION}:lambda:path/2015-03-31/functions/${messagesLambda.functionArn}/invocations`, and similarly for the `PhotosHandler` string and `PhotosHandlerLambdaFunction`, resulting in a valid OpenAPI spec file that is then passed to the `SpecRestApi` construct.
  For more information on specifying an API with OpenAPI, please see the [OpenAPI Specification](https://spec.openapis.org/oas/latest.html)

  This construct defines a custom type, `ApiIntegration`, that is specified as a required prop. The type has a required property, `id`, and two optional properties `existingLambdaObj` and `lambdaFunctionProps`. The `id` property is used to map the corresponding lambda function being defined with the placeholder string in the OpenAPI template file, and is not a CDK construct ID. Exactly one of `existingLambdaObj` or `lambdaFunctionProps` must be specified or the construct will throw an error.

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Deploy an edge-optimized API endpoint
  * Enable CloudWatch logging for API Gateway
  * Configure least privilege access IAM role for API Gateway
  * Enable X-Ray Tracing

  * Configure limited privilege access IAM roles for Lambda functions
  * Enable reusing connections with Keep-Alive for NodeJs Lambda functions
  * Enable X-Ray Tracing
  * Set Environment Variables
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)


pkgId: bb75c11afa42117949ae885ab488e5feff6f1d130358208c79a8d18dfe338c61
name: python-aws-solutions-constructs.aws-route53-alb
arch: src
version: 2.73.0
epoch: 0
release: 1
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-route53-alb-2.73.0-1.src.rpm
checksum_type: sha256
summary:
  CDK constructs for defining an interaction between an Amazon Route53 domain and an Application Load Balancer.

description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_route53_alb`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-route53-alb`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.route53alb`|

  This AWS Solutions Construct implements an Amazon Route53 Hosted Zone routing to an Application Load Balancer
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { Route53ToAlb } from '@aws-solutions-constructs/aws-route53-alb';
  // Note - all alb constructs turn on ELB logging by default, so require that an environment including account
  // and region be provided when creating the stack
  //
  // new MyStack(app, 'id', {env: {account: '123456789012', region: 'us-east-1' }});
  new Route53ToAlb(this, 'Route53ToAlbPattern', {
    privateHostedZoneProps: {
      zoneName: 'www.example.com',
    },
    publicApi: false,
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_route53_alb import Route53ToAlb
  from aws_cdk import (
      aws_route53 as route53,
      Stack
  )
  from constructs import Construct




  Route53ToAlb(self, 'Route53ToAlbPattern',
                  public_api=False,
                  private_hosted_zone_props=route53.HostedZoneProps(
                      zone_name='www.example.com',
                  )
                  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.route53.*;
  import software.amazon.awsconstructs.services.route53alb.*;
  // Note - all alb constructs turn on ELB logging by default, so require that an environment including account
  // and region be provided when creating the stack
  //
  // new MyStack(app, "id", StackProps.builder()
  //         .env(Environment.builder()
  //                 .account("123456789012")
  //                 .region("us-east-1")
  //                 .build());
  new Route53ToAlb(this, "Route53ToAlbPattern",
          new Route53ToAlbProps.Builder()
                  .privateHostedZoneProps(new HostedZoneProps.Builder()
                          .zoneName("www.example.com")
                          .build())
                  .publicApi(false)
                  .build());
  ```

  This construct cannot create a new Public Hosted Zone, if you are creating a public API you must supply an existing Public Hosted Zone that will be reconfigured with a new Alias record. Public Hosted Zones are configured with public domain names and are not well suited to be launched and torn down dynamically, so this construct will only reconfigure existing Public Hosted Zones.
  This construct can create Private Hosted Zones. If you want a Private Hosted Zone, then you can either provide an existing Private Hosted Zone or a privateHostedZoneProps value with at least the Domain Name defined.
  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  | privateHostedZoneProps? | [route53.PrivateHostedZoneProps](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53.PrivateHostedZoneProps.html) | Optional custom properties for a new Private Hosted Zone. Cannot be specified for a public API. Cannot specify a VPC, it will use the VPC in existingVpc or the VPC created by the construct. Providing both this and existingHostedZoneInterfaceis an error. |
  | existingHostedZoneInterface? | [route53.IHostedZone](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53.IHostedZone.html) | Existing Public or Private Hosted Zone (type must match publicApi setting). Specifying both this and privateHostedZoneProps is an error. If this is a Private Hosted Zone, the associated VPC must be provided as the existingVpc property |
  | loadBalancerProps? | [elasticloadbalancingv2.ApplicationLoadBalancerProps](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancerProps.html) | Optional custom properties for a new loadBalancer. Providing both this and existingLoadBalancer is an error. This cannot specify a VPC, it will use the VPC in existingVpc or the VPC created by the construct. |
  | existingLoadBalancerObj? | [elasticloadbalancingv2.ApplicationLoadBalancer](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer.html) | Existing Application Load Balancer to incorporate into the construct architecture. Providing both this and loadBalancerProps is an error. The VPC containing this loadBalancer must match the VPC provided in existingVpc. |
  | vpcProps? | [ec2.VpcProps](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.VpcProps.html) | Optional custom properties for a VPC the construct will create. This VPC will be used by the new ALB and any Private Hosted Zone the construct creates (that's why loadBalancerProps and privateHostedZoneProps can't include a VPC). Providing both this and existingVpc is an error. |
  | existingVpc? | [ec2.IVpc](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html) | An existing VPC in which to deploy the construct. Providing both this and vpcProps is an error. If the client provides an existing load balancer and/or existing Private Hosted Zone, those constructs must exist in this VPC. |
  | logAlbAccessLogs? | boolean| Whether to turn on Access Logs for the Application Load Balancer. Uses an S3 bucket with associated storage costs.Enabling Access Logging is a best practice. default - true |
  | albLoggingBucketProps? | [s3.BucketProps](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html) | Optional properties to customize the bucket used to store the ALB Access Logs. Supplying this and setting logAlbAccessLogs to false is an error. @default - none |
  | publicApi | boolean | Whether the construct is deploying a private or public API. This has implications for the Hosted Zone, VPC and ALB. |

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  | hostedZone | [route53.IHostedZone](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53.IHostedZone.html) | The hosted zone used by the construct (whether created by the construct or providedb by the client) |
  | vpc | [ec2.IVpc](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html) | The VPC used by the construct (whether created by the construct or providedb by the client) |
  | loadBalancer | [elasticloadbalancingv2.ApplicationLoadBalancer](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer.html) | The Load Balancer used by the construct (whether created by the construct or providedb by the client) |

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Adds an ALIAS record to the new or provided Hosted Zone that routes to the construct's ALB

  * Creates an Application Load Balancer with no Listener or target. The construct can incorporate an existing, fully configured ALB if provided.


pkgId: ebb7d143c6ef83f0ee560b80ba914b4e00e98e8afdc65b983614bf5918ca2c9a
name: python-aws-solutions-constructs.aws-route53-apigateway
arch: src
version: 2.74.0
epoch: 0
release: 1
summary: CDK constructs for connecting an Amazon Route53 domain to an API Gateway.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-route53-apigateway-2.74.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_route53_apigateway`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-route53-apigateway`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.route53apigateway`|

  This AWS Solutions Construct implements an Amazon Route 53 connected to a configured Amazon API Gateway REST API.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import * as route53 from "aws-cdk-lib/aws-route53";
  import * as acm from "aws-cdk-lib/aws-certificatemanager";
  import { Route53ToApiGateway } from '@aws-solutions-constructs/aws-route53-apigateway';
  // The construct requires an existing REST API, this can be created in raw CDK or extracted
  // from a previously instantiated construct that created an API Gateway REST API
  const existingRestApi = previouslyCreatedApigatewayToLambdaConstruct.apiGateway;
  // domainName must match existing hosted zone in your account and the existing certificate
  const ourHostedZone = route53.HostedZone.fromLookup(this, 'HostedZone', {
      domainName: "example.com",
  });
  const certificate = acm.Certificate.fromCertificateArn(
      this,
      "fake-cert",
      "arn:aws:acm:us-east-1:123456789012:certificate/11112222-3333-1234-1234-123456789012"
  );
  // This construct can only be attached to a configured API Gateway.
  new Route53ToApiGateway(this, 'Route53ToApiGatewayPattern', {
      existingApiGatewayInterface: existingRestApi,
      existingHostedZoneInterface: ourHostedZone,
      publicApi: true,
      existingCertificateInterface: certificate
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_route53_apigateway import Route53ToApiGateway
  from aws_cdk import (
      aws_route53 as route53,
      aws_certificatemanager as acm,
      Stack
  )
  from constructs import Construct


  existingRestApi = previouslyCreatedApigatewayToLambdaConstruct.apiGateway

  ourHostedZone = route53.HostedZone.from_lookup(self, 'HostedZone',
                                                  domain_name="example.com",
                                                  )

  certificate = acm.Certificate.from_certificate_arn(
      self,
      'existing-cert',
      "arn:aws:acm:us-east-1:123456789012:certificate/11112222-3333-1234-1234-123456789012"
  )

  Route53ToApiGateway(self, 'Route53ToApigatewayPattern',
                      existing_api_gateway_interface=existingRestApi,
                      existing_hosted_zone_interface=ourHostedZone,
                      public_api=True,
                      existing_certificate_interface=certificate
                      )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.route53.*;
  import software.amazon.awscdk.services.apigateway.*;
  import software.amazon.awscdk.services.certificatemanager.*;
  import software.amazon.awsconstructs.services.route53apigateway.*;
  // The construct requires an existing REST API, this can be created in raw CDK
  // or extracted from a previously instantiated construct that created an API
  // Gateway REST API
  final IRestApi existingRestApi = previouslyCreatedApigatewayToLambdaConstruct.getApiGateway();
  // domainName must match existing hosted zone in your account and the existing certificate
  final IHostedZone ourHostedZone = HostedZone.fromLookup(this, "HostedZone",
          new HostedZoneProviderProps.Builder()
                  .domainName("example.com")
                  .build());
  // Obtain a pre-existing certificate from your account
  final ICertificate certificate = Certificate.fromCertificateArn(
          this,
          "existing-cert",
          "arn:aws:acm:us-east-1:123456789012:certificate/11112222-3333-1234-1234-123456789012");
  // This construct can only be attached to a configured API Gateway.
  new Route53ToApiGateway(this, "Route53ToApiGatewayPattern",
          new Route53ToApiGatewayProps.Builder()
                  .existingApiGatewayInterface(existingRestApi)
                  .existingHostedZoneInterface(ourHostedZone)
                  .publicApi(true)
                  .existingCertificateInterface(certificate)
                  .build());
  ```

  This construct cannot create a new Public Hosted Zone, if you are creating a public API you must supply an existing Public Hosted Zone that will be reconfigured with a new Alias record. Public Hosted Zones are configured with public domain names and are not well suited to be launched and torn down dynamically, so this construct will only reconfigure existing Public Hosted Zones.
  This construct can create Private Hosted Zones. If you want a Private Hosted Zone, then you can either provide an existing Private Hosted Zone or a privateHostedZoneProps value with at least the Domain Name defined. If you are using privateHostedZoneProps, an existing wildcard certificate (*.example.com) must be issued from a previous domain to be used in the newly created Private Hosted Zone. New certificate creation and validation do not take place in this construct. A private Rest API already exists in a VPC, so that VPC must be provided in the existingVpc prop. There is no scenario where this construct can create a new VPC (since it can't create a new API), so the vpcProps property is not supported on this construct.
  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  | publicApi | boolean | Whether the construct is deploying a private or public API. This has implications for the Hosted Zone and VPC. |
  | privateHostedZoneProps? | [route53.PrivateHostedZoneProps](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53.PrivateHostedZoneProps.html) | Optional custom properties for a new Private Hosted Zone. Cannot be specified for a public API. Cannot specify a VPC, it will use the VPC in existingVpc or the VPC created by the construct. Providing both this and existingHostedZoneInterface is an error. |
  | existingHostedZoneInterface? | [route53.IHostedZone](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53.IHostedZone.html) | Existing Public or Private Hosted Zone (type must match publicApi setting). Specifying both this and privateHostedZoneProps is an error. If this is a Private Hosted Zone, the associated VPC must be provided as the existingVpc property.|
  | existingVpc? | [ec2.IVpc](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html) | An existing VPC in which to deploy the construct.|
  |existingApiGatewayInterface|[api.IRestApi](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.IRestApi.html)|The existing API Gateway instance that will be connected to the Route 53 hosted zone. *Note that Route 53 can only be connected to a configured API Gateway, so this construct only accepts an existing IRestApi and does not accept apiGatewayProps.*|
  | existingCertificateInterface |[certificatemanager.ICertificate](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_certificatemanager.ICertificate.html)| An existing AWS Certificate Manager certificate for your custom domain name.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |hostedZone|[route53.IHostedZone](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_route53.IHostedZone.html)|The hosted zone used by the construct (whether created by the construct or provided by the client) |
  | vpc? | [ec2.IVpc](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html) | The VPC used by the construct. |
  |apiGateway|[api.RestApi](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.RestApi.html)|Returns an instance of the API Gateway REST API created by the pattern.|
  |certificate|[certificatemanager.ICertificate](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_certificatemanager.ICertificate.html)| THe certificate used by the construct (whether create by the construct or provided by the client)

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Adds an ALIAS record to the new or provided Hosted Zone that routes to the construct's API Gateway

  * User provided API Gateway object is used as-is
  * Sets up custom domain name mapping to API


pkgId: 85c71c86efcd9a47a37a2db2f1376a1372fa16933ea4021557e3694cc9b2f050
name: python-aws-solutions-constructs.aws-s3-lambda
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK Constructs for AWS S3 to AWS Lambda integration
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-s3-lambda-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_s3_lambda`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-s3-lambda`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.s3lambda`|

  This AWS Solutions Construct implements an Amazon S3 bucket connected to an AWS Lambda function.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import * as lambda from "aws-cdk-lib/aws-lambda";
  import { S3ToLambdaProps, S3ToLambda } from '@aws-solutions-constructs/aws-s3-lambda';
  new S3ToLambda(this, 'test-s3-lambda', {
    lambdaFunctionProps: {
      code: lambda.Code.fromAsset(`lambda`),
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler'
    },
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_s3_lambda import S3ToLambda
  from aws_cdk import (
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  S3ToLambda(self, 'test_s3_lambda',
             lambda_function_props=_lambda.FunctionProps(
                 code=_lambda.Code.from_asset('lambda'),
                 runtime=_lambda.Runtime.PYTHON_3_9,
                 handler='index.handler'
             )
             )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.s3lambda.*;
  new S3ToLambda(this, "test-s3-lambda'", new S3ToLambdaProps.Builder()
          .lambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("lambda"))
                  .handler("index.handler")
                  .build())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|Optional user provided props to override the default props for the Lambda function.|
  |existingBucketObj?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Existing instance of S3 Bucket object. If this is provided, then also providing bucketProps is an error. |
  |bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Bucket.|
  |s3EventSourceProps?|[`S3EventSourceProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda_event_sources.S3EventSourceProps.html)|Optional user provided props to override the default props for S3EventSourceProps|
  |loggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Logging Bucket.|
  |logS3AccessLogs?| boolean|Whether to turn on Access Logging for the S3 bucket. Creates an S3 bucket with associated storage costs for the logs. Enabling Access Logging is a best practice. default - true|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the lambda.Function created by the construct|
  |s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of the s3.Bucket created by the construct|
  |s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.|
  |s3BucketInterface|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Returns an instance of s3.IBucket created by the construct|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure Access logging for S3 Bucket
  * Enable server-side encryption for S3 Bucket using AWS managed KMS Key
  * Enforce encryption of data in transit
  * Turn on the versioning for S3 Bucket
  * Don't allow public access for S3 Bucket
  * Retain the S3 Bucket when deleting the CloudFormation stack
  * Applies Lifecycle rule to move noncurrent object versions to Glacier storage after 90 days

  * Configure limited privilege access IAM role for Lambda function
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Enable X-Ray Tracing
  * Set Environment Variables
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)


pkgId: 77997b809acc63fe6d8eacb5c53bcf03429b20428355b79024235b3118581b80
name: python-aws-solutions-constructs.aws-s3-sns
arch: src
version: 2.74.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an Amazon S3 bucket and an Amazon SNS Topic.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-s3-sns-2.74.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_s3_sns`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-s3-sns`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.s3sns`|

  This AWS Solutions Construct implements an Amazon S3 Bucket that is configured to send S3 event messages to an Amazon SNS topic.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { S3ToSns } from "@aws-solutions-constructs/aws-s3-sns";
  new S3ToSns(this, 'S3ToSNSPattern', {});
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_s3_sns import S3ToSns
  from aws_cdk import Stack
  from constructs import Construct
  S3ToSns(self, 'S3ToSNSPattern')
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awsconstructs.services.s3sns.*;
  new S3ToSns(this, "S3ToSNSPattern", new S3ToSnsProps.Builder()
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingBucketObj?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Existing instance of S3 Bucket object. If this is provided, then also providing bucketProps is an error. |
  |bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Bucket.|
  |s3EventTypes?|[`s3.EventType[]`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.EventType.html)|The S3 event types that will trigger the notification. Defaults to s3.EventType.OBJECT_CREATED.|
  |s3EventFilters?|[`s3.NotificationKeyFilter[]`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.NotificationKeyFilter.html)|S3 object key filter rules to determine which objects trigger this event. If not specified no filter rules will be applied.|
  |loggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Logging Bucket.|
  |logS3AccessLogs?|`boolean`|Whether to turn on Access Logging for the S3 bucket. Creates an S3 bucket with associated storage costs for the logs. Enabling Access Logging is a best practice. default - true|
  |existingTopicObj?|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.Topic.html)|An optional, existing SNS topic to be used instead of the default topic. Providing both this and `topicProps` will cause an error. If the SNS Topic is encrypted with a Customer-Managed KMS Key, the key must be specified in the `existingTopicEncryptionKey` property.|
  |existingTopicEncryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|If an existing topic is provided in the `existingTopicObj` property, and that topic is encrypted with a Customer-Managed KMS key, this property also needs to be set with same key.|
  |topicProps?|[`sns.TopicProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.TopicProps.html)|Optional user provided props to override the default props for the SNS topic.|
  |enableEncryptionWithCustomerManagedKey?|`boolean`|If no key is provided, this flag determines whether the topic is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: topicProps.encryptionMasterKey, encryptionKey or encryptionKeyProps.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional, imported encryption key to encrypt the SNS Topic with.|
  |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SNS Topic with.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |snsTopic|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.Topic.html)|Returns an instance of the SNS Topic created by the pattern.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|Returns an instance of the kms.Key associated with the SNS Topic|
  |s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of the s3.Bucket created by the construct|
  |s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.|
  |s3BucketInterface|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Returns an instance of s3.IBucket created by the construct.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure Access logging for the S3 Bucket
  * Enable server-side encryption for S3 Bucket using an AWS managed KMS Key
  * Enforce encryption of data in transit
  * Turn on the versioning for the S3 Bucket
  * Don't allow public access for the S3 Bucket
  * Retain the S3 Bucket when deleting the CloudFormation stack
  * Applies Lifecycle rule to move noncurrent object versions to Glacier storage after 90 days

  * Configure least privilege SNS Topic access policy to allow the S3 Bucket to publish messages to it
  * Enable server-side encryption for the SNS Topic using an AWS managed KMS Key
  * Enforce encryption of data in transit


pkgId: 0c2e697fd76047709d1101039e0c518aa5c2c1745a9648b5122dc3ce1a81ed56
name: python-aws-solutions-constructs.aws-s3-sqs
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an Amazon S3 bucket and an Amazon SQS queue.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-s3-sqs-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_s3_sqs`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-s3-sqs`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.s3sqs`|

  This AWS Solutions Construct implements an Amazon S3 Bucket that is configured to send notifications to an Amazon SQS queue.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { S3ToSqs } from "@aws-solutions-constructs/aws-s3-sqs";
  new S3ToSqs(this, 'S3ToSQSPattern', {});
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_s3_sqs import S3ToSqs
  from aws_cdk import Stack
  from constructs import Construct
  S3ToSqs(self, 'S3ToSQSPattern')
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awsconstructs.services.s3sqs.*;
  new S3ToSqs(this, "S3ToSQSPattern", new S3ToSqsProps.Builder()
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingBucketObj?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Existing instance of S3 Bucket object. If this is provided, then also providing bucketProps is an error. |
  |bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Bucket.|
  |s3EventTypes?|[`s3.EventType[]`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.EventType.html)|The S3 event types that will trigger the notification. Defaults to s3.EventType.OBJECT_CREATED.|
  |s3EventFilters?|[`s3.NotificationKeyFilter[]`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.NotificationKeyFilter.html)|S3 object key filter rules to determine which objects trigger this event. If not specified no filter rules will be applied.|
  |existingQueueObj?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Existing SQS queue to be used instead of the default queue. Providing both this and `queueProps` will cause an error. If the SQS queue is encrypted, the KMS key utilized for encryption must be a customer managed CMK.|
  |queueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user provided props to override the default props for the SQS queue.|
  |deadLetterQueueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user provided props to override the default props for the dead letter SQS queue.|
  |deployDeadLetterQueue?|`boolean`|Whether to create a secondary queue to be used as a dead letter queue. Defaults to true.|
  |maxReceiveCount?|`number`|The number of times a message can be unsuccessfully dequeued before being moved to the dead letter queue. Defaults to 15.|
  |enableEncryptionWithCustomerManagedKey?|`boolean`|If no key is provided, this flag determines whether the queue is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: queueProps.encryptionMasterKey, encryptionKey or encryptionKeyProps.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional, imported encryption key to encrypt the SQS Queue with.|
  |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SQS queue with.|
  |loggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Logging Bucket.|
  |logS3AccessLogs?| boolean|Whether to turn on Access Logging for the S3 bucket. Creates an S3 bucket with associated storage costs for the logs. Enabling Access Logging is a best practice. default - true|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |sqsQueue|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the SQS queue created by the pattern.|
  |deadLetterQueue?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the dead-letter SQS queue created by the pattern.|
  |encryptionKey|[`kms.IKey`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.IKey.html)|Returns an instance of kms.Key used for the SQS queue.|
  |s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of the s3.Bucket created by the construct|
  |s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.|
  |s3BucketInterface|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Returns an instance of s3.IBucket created by the construct.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure Access logging for S3 Bucket
  * Enable server-side encryption for S3 Bucket using AWS managed KMS Key
  * Enforce encryption of data in transit
  * Turn on the versioning for S3 Bucket
  * Don't allow public access for S3 Bucket
  * Retain the S3 Bucket when deleting the CloudFormation stack
  * Applies Lifecycle rule to move noncurrent object versions to Glacier storage after 90 days

  * Configure least privilege access permissions for SQS Queue
  * Deploy SQS dead-letter queue for the source SQS Queue
  * Enable server-side encryption for SQS Queue using Customer managed KMS Key
  * Enforce encryption of data in transit


pkgId: 41134e240fa610d6a6ddebc1aef5aa26054605039635966898822b4433e166da
name: python-aws-solutions-constructs.aws-s3-stepfunctions
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK Constructs for AWS S3 to AWS Step Functions integration
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-s3-stepfunctions-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_s3_stepfunctions`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-s3-stepfunctions`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.s3stepfunctions`|

  This AWS Solutions Construct implements an Amazon S3 bucket connected to an AWS Step Functions.
  *Note - This constructs sends S3 Event Notification to EventBridge, then triggers AWS Step Functions State Machine executions from EventBridge.*
  *An alternative architecture can be built that triggers a Lambda function from S3 Event notifications using aws-s3-lambda and aws-lambda-stepfunctions. Channelling the S3 events through Lambda is less flexible than EventBridge, but is more cost effective and has lower latency.*
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { S3ToStepfunctions, S3ToStepfunctionsProps } from '@aws-solutions-constructs/aws-s3-stepfunctions';
  import * as stepfunctions from 'aws-cdk-lib/aws-stepfunctions';
  const startState = new stepfunctions.Pass(this, 'StartState');
  new S3ToStepfunctions(this, 'test-s3-stepfunctions-stack', {
      stateMachineProps: {
        definition: startState
      }
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_s3_stepfunctions import S3ToStepfunctions
  from aws_cdk import (
      aws_stepfunctions as stepfunctions,
      Stack
  )
  from constructs import Construct
  start_state = stepfunctions.Pass(self, 'start_state')
  S3ToStepfunctions(
      self, 'test_s3_stepfunctions_stack',
      state_machine_props=stepfunctions.StateMachineProps(
          definition=start_state)
  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.stepfunctions.*;
  import software.amazon.awsconstructs.services.s3stepfunctions.*;
  final Pass startState = new Pass(this, "StartState");
  new S3ToStepfunctions(this, "test_s3_stepfunctions_stack",
          new S3ToStepfunctionsProps.Builder()
                  .stateMachineProps(new StateMachineProps.Builder()
                          .definition(startState)
                          .build())
                  .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingBucketObj?|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Existing instance of S3 Bucket object. If this is provided, then also providing bucketProps is an error. **The existing bucket must have [EventBridge enabled](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-event-notifications-eventbridge.html) for this to work.**|
  |bucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Bucket.|
  |stateMachineProps|[`sfn.StateMachineProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_stepfunctions.StateMachineProps.html)|User provided props to override the default props for sfn.StateMachine.|
  |eventRuleProps?|[`events.RuleProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_events.RuleProps.html)|Optional user provided eventRuleProps to override the defaults.|
  |deployCloudTrail?|`boolean`|Whether to deploy a Trail in AWS CloudTrail to log API events in Amazon S3. Defaults to `true`. <span style="color:red">**This is now deprecated and ignored because the construct no longer needs CloudTrail since it uses S3 Event Notifications**</span>.|
  |createCloudWatchAlarms|`boolean`|Whether to create recommended CloudWatch alarms.|
  |logGroupProps?|[`logs.LogGroupProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroupProps.html)|Optional user provided props to override the default props for for the CloudWatchLogs LogGroup.|
  |loggingBucketProps?|[`s3.BucketProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.BucketProps.html)|Optional user provided props to override the default props for the S3 Logging Bucket.|
  |logS3AccessLogs?| boolean|Whether to turn on Access Logging for the S3 bucket. Creates an S3 bucket with associated storage costs for the logs. Enabling Access Logging is a best practice. default - true|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |stateMachine|[`sfn.StateMachine`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_stepfunctions.StateMachine.html)|Returns an instance of sfn.StateMachine created by the construct.|
  |stateMachineLogGroup|[`logs.ILogGroup`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.ILogGroup.html)|Returns an instance of the ILogGroup created by the construct for StateMachine.|
  |cloudwatchAlarms?|[`cloudwatch.Alarm[]`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudwatch.Alarm.html)|Returns a list of cloudwatch.Alarm created by the construct.|
  |s3Bucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of the s3.Bucket created by the construct.|
  |s3LoggingBucket?|[`s3.Bucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.Bucket.html)|Returns an instance of s3.Bucket created by the construct as the logging bucket for the primary bucket.|
  |s3BucketInterface|[`s3.IBucket`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_s3.IBucket.html)|Returns an instance of s3.IBucket created by the construct.|
  *Note - with the release of Enable EventBridge for Amazon S3, AWS CloudTrail is no longer required to implement this construct. Because of this, the following properties have been removed:*
  * cloudtrail
  * cloudtrailBucket
  * cloudtrailLoggingBucket

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Enable EventBridge to send events from the S3 Bucket
  * Configure Access logging for S3 Bucket
  * Enable server-side encryption for S3 Bucket using AWS managed KMS Key
  * Enforce encryption of data in transit
  * Turn on the versioning for S3 Bucket
  * Don't allow public access for S3 Bucket
  * Retain the S3 Bucket when deleting the CloudFormation stack
  * Applies Lifecycle Rule to move noncurrent object versions to Glacier storage after 90 days

  * Enable S3 to send events to EventBridge when an object is created.

  * Grant least privilege permissions to CloudWatch Events to trigger the Lambda Function

  * Enable CloudWatch logging for API Gateway
  * Deploy best practices CloudWatch Alarms for the Step Functions


pkgId: 6e5315c5255739cd5434152ca51ff449e754922110f43c48333cd11ec11b1050
name: python-aws-solutions-constructs.aws-sns-lambda
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK Constructs for AWS SNS to AWS Lambda integration
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-sns-lambda-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_sns_lambda`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-sns-lambda`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.snslambda`|

  This AWS Solutions Construct implements an Amazon SNS connected to an AWS Lambda function.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { SnsToLambda, SnsToLambdaProps } from "@aws-solutions-constructs/aws-sns-lambda";
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  new SnsToLambda(this, 'test-sns-lambda', {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset(`lambda`)
    }
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_sns_lambda import SnsToLambda
  from aws_cdk import (
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  SnsToLambda(self, 'test_sns_lambda',
              lambda_function_props=_lambda.FunctionProps(
                  code=_lambda.Code.from_asset('lambda'),
                  runtime=_lambda.Runtime.PYTHON_3_9,
                  handler='index.handler'
              )
              )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.snslambda.*;
  new SnsToLambda(this, "test-lambda-sqs-stack", new SnsToLambdaProps.Builder()
          .lambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("lambda"))
                  .handler("index.handler")
                  .build())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and `lambdaFunctionProps` will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|User provided props to override the default props for the Lambda function.|
  |existingTopicObj?|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of SNS Topic object, providing both this and `topicProps` will cause an error.|
  |topicProps?|[`sns.TopicProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.TopicProps.html)|Optional user provided properties to override the default properties for the SNS topic.|
  |enableEncryptionWithCustomerManagedKey?|`boolean`|If no key is provided, this flag determines whether the SNS Topic is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: topicProps.masterKey, encryptionKey or encryptionKeyProps.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional, imported encryption key to encrypt the SNS Topic with.|
  |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SNS Topic with.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the Lambda function created by the pattern.|
  |snsTopic|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.Topic.html)|Returns an instance of the SNS topic created by the pattern.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure least privilege access permissions for SNS Topic
  * Enable server-side encryption for SNS Topic using AWS managed KMS Key
  * Enforce encryption of data in transit

  * Configure limited privilege access IAM role for Lambda function
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Enable X-Ray Tracing
  * Set Environment Variables
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)


pkgId: 085cc74ff4ca8728495a04f314bac5f9195db500a2dfa40282a70093b123cb72
name: python-aws-solutions-constructs.aws-sns-sqs
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an Amazon SNS topic and an Amazon SQS queue.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-sns-sqs-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_sns_sqs`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-sns-sqs`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.snssqs`|

  This AWS Solutions Construct implements an Amazon SNS topic connected to an Amazon SQS queue.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { SnsToSqs, SnsToSqsProps } from "@aws-solutions-constructs/aws-sns-sqs";
  import * as iam from 'aws-cdk-lib/aws-iam';
  const snsToSqsStack = new SnsToSqs(this, 'SnsToSqsPattern', {});
  // Grant yourself permissions to use the Customer Managed KMS Key
  const policyStatement = new iam.PolicyStatement({
      actions: ["kms:Encrypt", "kms:Decrypt"],
      effect: iam.Effect.ALLOW,
      principals: [ new iam.AccountRootPrincipal() ],
      resources: [ "*" ]
  });
  snsToSqsStack.queueEncryptionKey?.addToResourcePolicy(policyStatement);
  snsToSqsStack.topicEncryptionKey?.addToResourcePolicy(policyStatement);
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_sns_sqs import SnsToSqs
  from aws_cdk import (
      aws_iam as iam,
      Stack
  )
  from constructs import Construct
  construct_stack = SnsToSqs(self, 'SnsToSqsPattern')
  policy_statement = iam.PolicyStatement(
      actions=["kms:Encrypt", "kms:Decrypt"],
      effect=iam.Effect.ALLOW,
      principals=[iam.AccountRootPrincipal()],
      resources=["*"]
  )
  construct_stack.queue_encryption_key.add_to_resource_policy(policy_statement)
  construct_stack.topic_encryption_key.add_to_resource_policy(policy_statement)
  ```
  Java
  ```java
  import software.constructs.Construct;
  import java.util.List;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.iam.*;
  import software.amazon.awsconstructs.services.snssqs.*;
  final SnsToSqs constructStack = new SnsToSqs(this, "SnsToSqsPattern",
          new SnsToSqsProps.Builder()
                  .build());
  // Grant yourself permissions to use the Customer Managed KMS Key
  final PolicyStatement policyStatement = PolicyStatement.Builder.create()
          .actions(List.of("kms:Encrypt", "kms:Decrypt"))
          .effect(Effect.ALLOW)
          .principals(List.of(new AccountRootPrincipal()))
          .resources(List.of("*"))
          .build();
  constructStack.getQueueEncryptionKey().addToResourcePolicy(policyStatement);
  constructStack.getTopicEncryptionKey().addToResourcePolicy(policyStatement);
  ```

  As of Solutions Constructs v2.58.0, we have updated the interface of SnsToSqs. The original implementation shared a KMS customer managed key between the topic and queue. There was a single set of construct props to define this key and a single  property to access the single key. The new interface does not share a key, but uses a separate key for each resource and allows clients to control and access these keys independently.
  In  CDK v2.32.0, the CDK introduced an improvement in SNS Subscriptions that narrowed the permissions to access the SQS encryption key to the specific SNS topic (it was formerly the entire SNS service). This feature created a circular reference in SnsToSqs constructs due to the shared KMS keys, but since the improvement was gated behind the feature flag `@aws-cdk/aws-sns-subscriptions:restrictSqsDescryption`, it had no impact on existing applications. Newly generated CDK apps had the feature flag turned on by default, so would have to adjust settings to avoid the circular reference (the minimal deployment code would not work).
  In addition, attempting to share the key between resources led to odd implementation choices in the construct - the implementation was highly biased towards the topic. For instance, if an existingTopic was provided but a CMK was still created to encrypt the queue that CMK was not available in the `encryptionKey` property.
  Code using the original, single key props should continue to work - while that portion of the construct interface is deprecated it is not going away any time soon. Any code using any of those props, or with the new feature flag not enabled, will continue to use the old implementation. We wrote many unit tests confirming the old implementation will continue to work the same, warts and all. We do  recommend that you migrate to use the new key features to take advantage of the finer grained IAM policy for the key and more control over key behavior within the construct.
  Any code that references one of the new key properties (or that enables the new feature flag) will use the new functionality.

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingTopicObj?|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.Topic.html)|An optional, existing SNS topic to be used instead of the default topic. Providing both this and `topicProps` will cause an error.|
  |topicProps?|[`sns.TopicProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.TopicProps.html)|Optional user provided properties to override the default properties for the SNS topic.|
  |encryptTopicWithCmk|`boolean`|Whether to encrypt the Topic with a customer managed KMS key (CMK). This is the default behavior, and this property defaults to true - if it is explicitly set to false then the Topic is encrypted with an Amazon managed KMS key. For a completely unencrypted Topic (not recommended), create the Topic separately from the construct and pass it in using the existingTopicObject.|
  |topicEncryptionKeyProps|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|An optional subset of key properties to override the default properties used by constructs (`enableKeyRotation: true`). These properties will be used in constructing the CMK used to encrypt the SNS topic.|
  |existingTopicEncryptionKey|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional CMK that will be used by the construct to encrypt the new SNS Topic.|
  |existingQueueObj?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|An optional, existing SQS queue to be used instead of the default queue. Providing both this and `queueProps` will cause an error.|
  |queueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user provided properties to override the default properties for the SQS queue.|
  |encryptQueueWithCmk|`boolean`|Whether to encrypt the Queue with a customer managed KMS key (CMK). This is the default behavior, and this property defaults to true - if it is explicitly set to false then the Queue is encrypted with an Amazon managed KMS key. For a completely unencrypted Queue (not recommended), create the Queue separately from the construct and pass it in using the existingQueueObject. Since SNS subscriptions do not currently support SQS queues with AWS managed encryption keys, setting this to false will always result in an error from the underlying CDK - we have still included this property for consistency with topics and to be ready if the services one day support this functionality.|
  |queueEncryptionKeyProps|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|An optional subset of key properties to override the default properties used by constructs (`enableKeyRotation: true`). These properties will be used in constructing the CMK used to encrypt the SQS queue.|
  |existingQueueEncryptionKey|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional CMK that will be used by the construct to encrypt the new SQS queue.|
  |deployDeadLetterQueue?|`boolean`|Whether to create a secondary queue to be used as a dead letter queue. Defaults to true.|
  |deadLetterQueueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user-provided props to override the default props for the dead letter SQS queue.|
  |maxReceiveCount?|`number`|The number of times a message can be unsuccessfully dequeued before being moved to the dead letter queue. Defaults to 15.|
  |sqsSubscriptionProps?|[`subscriptions.SqsSubscriptionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns_subscriptions.SqsSubscriptionProps.html)|Optional user-provided props to override the default props for sqsSubscriptionProps.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |snsTopic|[`sns.Topic`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sns.Topic.html)|Returns an instance of the SNS topic created by the pattern.|
  |topicEncryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|Returns the KMS key used to encrypt the topic within the construct. Note - this is only set if the construct assigns the key, if the key is passed in topicProps it will not appear here.|
  |sqsQueue|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the SQS queue created by the pattern.|
  |queueEncryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|Returns the KMS key used to encrypt the queue within the construct. Note - this is only set if the construct assigns the key, if the key is passed in topicProps it will not appear here.|
  |deadLetterQueue?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the dead-letter SQS queue created by the pattern.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |enableEncryptionWithCustomerManagedKey?|`boolean`|If no key is provided, this flag determines whether the queue is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: topicProps.masterKey, queueProps.encryptionMasterKey, encryptionKey or encryptionKeyProps. We recommend you migrate your code to use  encryptQueueWithCmk and encryptTopicWithCmk in place of this prop value.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional, imported encryption key to encrypt the SQS Queue and SNS Topic with. We recommend you migrate your code to use  queueEncryptionKey and topicEncryptionKey in place of this prop value.|
  |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SQS topic and queue with. We recommend you migrate your code to use  queueEncryptionKeyProps and topicEncryptionKeyProps in place of this prop value.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |encryptionKey|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|Returns an instance of kms.Key used for the SQS queue, and SNS Topic.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Configure least privilege access permissions for SNS Topic
  * Enable server-side encryption for SNS Topic using Customer managed KMS Key
  * Enforce encryption of data in transit

  * Configure least privilege access permissions for SQS Queue
  * Deploy SQS dead-letter queue for the source SQS Queue
  * Enable server-side encryption for SQS Queue using Customer managed KMS Key
  * Enforce encryption of data in transit


pkgId: eca7858f1b8db0539c95a996b96357386aacf27a81be023e03501334b7a03e56
name: python-aws-solutions-constructs.aws-sqs-lambda
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: CDK constructs for defining an interaction between an Amazon SQS queue and an AWS Lambda function.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-sqs-lambda-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_sqs_lambda`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-sqs-lambda`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.sqslambda`|

  This AWS Solutions Construct implements an Amazon SQS queue connected to an AWS Lambda function.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { SqsToLambda, SqsToLambdaProps } from "@aws-solutions-constructs/aws-sqs-lambda";
  import * as lambda from 'aws-cdk-lib/aws-lambda';
  new SqsToLambda(this, 'SqsToLambdaPattern', {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset(`lambda`)
    }
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_sqs_lambda import SqsToLambda
  from aws_cdk import (
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  SqsToLambda(self, 'SqsToLambdaPattern',
              lambda_function_props=_lambda.FunctionProps(
                  code=_lambda.Code.from_asset('lambda'),
                  runtime=_lambda.Runtime.PYTHON_3_9,
                  handler='index.handler'
              )
              )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.sqslambda.*;
  new SqsToLambda(this, "SnsToSqsPattern", new SqsToLambdaProps.Builder()
          .lambdaFunctionProps(new FunctionProps.Builder()
                  .runtime(Runtime.NODEJS_16_X)
                  .code(Code.fromAsset("lambda"))
                  .handler("index.handler")
                  .build())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLambdaObj?|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Existing instance of Lambda Function object, providing both this and lambdaFunctionProps will cause an error.|
  |lambdaFunctionProps?|[`lambda.FunctionProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.FunctionProps.html)|User provided props to override the default props for the Lambda function.|
  |existingQueueObj?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|An optional, existing SQS queue to be used instead of the default queue. Providing both this and `queueProps` will cause an error.|
  |queueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user-provided props to override the default props for the SQS queue.|
  |deadLetterQueueProps?|[`sqs.QueueProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.QueueProps.html)|Optional user-provided props to override the default props for the dead letter SQS queue.|
  |deployDeadLetterQueue?|`boolean`|Whether to create a secondary queue to be used as a dead letter queue. Defaults to true.|
  |maxReceiveCount?|`number`|The number of times a message can be unsuccessfully dequeued before being moved to the dead letter queue. Defaults to 15.|
  |sqsEventSourceProps?| [`SqsEventSourceProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda_event_sources.SqsEventSourceProps.html)|Optional user provided properties for the queue event source.|
  |enableEncryptionWithCustomerManagedKey?|`boolean`|If no key is provided, this flag determines whether the queue is encrypted with a new CMK or an AWS managed key. This flag is ignored if any of the following are defined: queueProps.encryptionMasterKey, encryptionKey or encryptionKeyProps.|
  |encryptionKey?|[`kms.Key`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html)|An optional, imported encryption key to encrypt the SQS Queue with.|
  |encryptionKeyProps?|[`kms.KeyProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_kms.Key.html#construct-props)|Optional user provided properties to override the default properties for the KMS encryption key used to encrypt the SQS queue with.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |lambdaFunction|[`lambda.Function`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Function.html)|Returns an instance of the Lambda function created by the pattern.|
  |sqsQueue|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the SQS queue created by the pattern.|
  |deadLetterQueue?|[`sqs.Queue`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_sqs.Queue.html)|Returns an instance of the dead-letter SQS queue created by the pattern.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Deploy SQS dead-letter queue for the source SQS Queue
  * Enable server-side encryption for source SQS Queue using AWS Managed KMS Key
  * Enforce encryption of data in transit

  * Configure limited privilege access IAM role for Lambda function
  * Enable reusing connections with Keep-Alive for NodeJs Lambda function
  * Enable X-Ray Tracing
  * Set Environment Variables
    * AWS_NODEJS_CONNECTION_REUSE_ENABLED (for Node 10.x and higher functions)


pkgId: 06ee978e3006e1e4a2a0192277b1894aee77b8694983aace0c319b994d64550a
name: python-aws-solutions-constructs.aws-wafwebacl-alb
arch: src
version: 2.73.0
epoch: 0
release: 1
summary: CDK constructs for defining an AWS web WAF connected to an Application Load Balancer.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-wafwebacl-alb-2.73.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_wafwebacl_alb`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-wafwebacl-alb`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.wafwebaclalb`|

  This AWS Solutions Construct implements an AWS WAF web ACL connected to an Application Load Balancer.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { WafwebaclToAlbProps, WafwebaclToAlb } from "@aws-solutions-constructs/aws-wafwebacl-alb";
  // Use an existing ALB, such as one created by Route53toAlb or AlbToLambda
  const existingLoadBalancer = previouslyCreatedLoadBalancer
  // Note - all alb constructs turn on ELB logging by default, so require that an environment including account
  // and region be provided when creating the stack
  //
  // new MyStack(app, 'id', {env: {account: '123456789012', region: 'us-east-1' }});
  //
  // This construct can only be attached to a configured Application Load Balancer.
  new WafwebaclToAlb(this, 'test-wafwebacl-alb', {
      existingLoadBalancerObj: existingLoadBalancer
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_route53_alb import Route53ToAlb
  from aws_solutions_constructs.aws_wafwebacl_alb import WafwebaclToAlbProps, WafwebaclToAlb
  from aws_cdk import (
      aws_route53 as route53,
      Stack
  )
  from constructs import Construct

  existingLoadBalancer = previouslyCreatedLoadBalancer






  WafwebaclToAlb(self, 'test_wafwebacl_alb',
                  existing_load_balancer_obj=existingLoadBalancer
                  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.route53.*;
  import software.amazon.awsconstructs.services.wafwebaclalb.*;
  // Use an existing ALB, such as one created by Route53toAlb or AlbToLambda
  final existingLoadBalancer = previouslyCreatedLoadBalancer
  // Note - all alb constructs turn on ELB logging by default, so require that an environment including account
  // and region be provided when creating the stack
  //
  // new MyStack(app, "id", StackProps.builder()
  //         .env(Environment.builder()
  //                 .account("123456789012")
  //                 .region("us-east-1")
  //                 .build());
  //
  // This construct can only be attached to a configured Application Load Balancer.
  new WafwebaclToAlb(this, "test-wafwebacl-alb", new WafwebaclToAlbProps.Builder()
          .existingLoadBalancerObj(existingLoadBalancer)
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingLoadBalancerObj|[`elbv2.ApplicationLoadBalancer`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer.html)|The existing Application Load Balancer Object that will be protected with the WAF web ACL. *Note that a WAF web ACL can only be added to a configured Application Load Balancer, so this construct only accepts an existing ApplicationLoadBalancer and does not accept applicationLoadBalancerProps.*|
  |existingWebaclObj?|[`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACL.html)|Existing instance of a WAF web ACL, an error will occur if this and props is set.|
  |webaclProps?|[`waf.CfnWebACLProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACLProps.html)|Optional user-provided props to override the default props for the AWS WAF web ACL. To use a different collection of managed rule sets, specify a new rules property. Use our [`wrapManagedRuleSet(managedGroupName: string, vendorName: string, priority: number)`](../core/lib/waf-defaults.ts) function from core to create an array entry from each desired managed rule set.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |webacl|[`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACL.html)|Returns an instance of the waf.CfnWebACL created by the construct.|
  |loadBalancer|[`elbv2.ApplicationLoadBalancer`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer.html)|Returns an instance of the Application Load Balancer Object created by the pattern. |

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Deploy a WAF web ACL with 7 [AWS managed rule groups](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list.html).
    * AWSManagedRulesBotControlRuleSet
    * AWSManagedRulesKnownBadInputsRuleSet
    * AWSManagedRulesCommonRuleSet
    * AWSManagedRulesAnonymousIpList
    * AWSManagedRulesAmazonIpReputationList
    * AWSManagedRulesAdminProtectionRuleSet
    * AWSManagedRulesSQLiRuleSet
    *Note that the default rules can be replaced by specifying the rules property of CfnWebACLProps*
  * Send metrics to Amazon CloudWatch

  * User provided Application Load Balancer object is used as-is


pkgId: a22f683910571d06d6a3f04fccfc901dcfb6d6fddc487c176437def51d4381a6
name: python-aws-solutions-constructs.aws-wafwebacl-apigateway
arch: src
version: 2.74.0
epoch: 0
release: 1
summary: CDK constructs for defining an AWS web WAF connected to Amazon API Gateway REST API.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-wafwebacl-apigateway-2.74.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_wafwebacl_apigateway`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-wafwebacl-apigateway`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.wafwebaclapigateway`|

  This AWS Solutions Construct implements an AWS WAF web ACL connected to Amazon API Gateway REST API.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import * as lambda from "aws-cdk-lib/aws-lambda";
  import { ApiGatewayToLambda } from '@aws-solutions-constructs/aws-apigateway-lambda';
  import { WafwebaclToApiGatewayProps, WafwebaclToApiGateway } from "@aws-solutions-constructs/aws-wafwebacl-apigateway";
  const apiGatewayToLambda = new ApiGatewayToLambda(this, 'ApiGatewayToLambdaPattern', {
    lambdaFunctionProps: {
      runtime: lambda.Runtime.NODEJS_16_X,
      handler: 'index.handler',
      code: lambda.Code.fromAsset(`lambda`)
    }
  });
  // This construct can only be attached to a configured API Gateway.
  new WafwebaclToApiGateway(this, 'test-wafwebacl-apigateway', {
    existingApiGatewayInterface: apiGatewayToLambda.apiGateway
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_apigateway_lambda import ApiGatewayToLambda
  from aws_solutions_constructs.aws_wafwebacl_apigateway import WafwebaclToApiGatewayProps, WafwebaclToApiGateway
  from aws_cdk import (
      aws_apigateway as api,
      aws_lambda as _lambda,
      Stack
  )
  from constructs import Construct
  api_gateway_to_lambda = ApiGatewayToLambda(self, 'ApiGatewayToLambdaPattern',
                                      lambda_function_props=_lambda.FunctionProps(
                                          code=_lambda.Code.from_asset(
                                              'lambda'),
                                          runtime=_lambda.Runtime.PYTHON_3_9,
                                          handler='index.handler'
                                      )
                                      )

  WafwebaclToApiGateway(self, 'test_wafwebacl_apigateway',
                      existing_api_gateway_interface=api_gateway_to_lambda.api_gateway
                      )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awscdk.services.apigateway.*;
  import software.amazon.awscdk.services.lambda.*;
  import software.amazon.awscdk.services.lambda.Runtime;
  import software.amazon.awsconstructs.services.apigatewaylambda.*;
  import software.amazon.awsconstructs.services.wafwebaclapigateway.*;
  final ApiGatewayToLambda apiGatewayToLambda = new ApiGatewayToLambda(this, "ApiGatewayToLambdaPattern",
          new ApiGatewayToLambdaProps.Builder()
                  .lambdaFunctionProps(new FunctionProps.Builder()
                          .runtime(Runtime.NODEJS_16_X)
                          .code(Code.fromAsset("lambda"))
                          .handler("index.handler")
                          .build())
                  .build());
  // This construct can only be attached to a configured Application Load
  // Balancer.
  new WafwebaclToApiGateway(this, "test-wafwebacl-apigateway", new WafwebaclToApiGatewayProps.Builder()
          .existingApiGatewayInterface(apiGatewayToLambda.getApiGateway())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingApiGatewayInterface|[`api.IRestApi`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.IRestApi.html)|The existing API Gateway instance that will be protected with the WAF web ACL. *Note that a WAF web ACL can only be added to a configured API Gateway, so this construct only accepts an existing IRestApi and does not accept apiGatewayProps.*|
  |existingWebaclObj?|[`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACL.html)|Existing instance of a WAF web ACL, an error will occur if this and props is set.|
  |webaclProps?|[`waf.CfnWebACLProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACLProps.html)|Optional user-provided props to override the default props for the AWS WAF web ACL. To use a different collection of managed rule sets, specify a new rules property. Use our [`wrapManagedRuleSet(managedGroupName: string, vendorName: string, priority: number)`](../core/lib/waf-defaults.ts) function from core to create an array entry from each desired managed rule set.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |webacl|[`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACL.html)|Returns an instance of the waf.CfnWebACL created by the construct.|
  |apiGateway|[`api.IRestApi`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_apigateway.IRestApi.html)|Returns an instance of the API Gateway REST API created by the pattern. |

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Deploy a WAF web ACL with 7 [AWS managed rule groups](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list.html).
    * AWSManagedRulesBotControlRuleSet
    * AWSManagedRulesKnownBadInputsRuleSet
    * AWSManagedRulesCommonRuleSet
    * AWSManagedRulesAnonymousIpList
    * AWSManagedRulesAmazonIpReputationList
    * AWSManagedRulesAdminProtectionRuleSet
    * AWSManagedRulesSQLiRuleSet
    *Note that the default rules can be replaced by specifying the rules property of CfnWebACLProps*
  * Send metrics to Amazon CloudWatch

  * User provided API Gateway object is used as-is


pkgId: 5f25cb0fb2156624cfcfd73f3eddf1f0277fdd3faa88110e83027a9ec3063500
name: python-aws-solutions-constructs.aws-wafwebacl-appsync
arch: src
version: 2.74.0
epoch: 0
release: 1
summary: CDK constructs for defining an AWS web WAF connected to an AWS AppSync API.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-wafwebacl-appsync-2.74.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**: | <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span> |
  | :--------------------------- | :------------------------------------------------------------------------------------------------ |
  <div style="height:8px"></div>
  | **Language**                                                                                   | **Package**                                               |
  | :--------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
  | ![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python             | `aws_solutions_constructs.aws_wafwebacl_appsync`          |
  | ![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript | `@aws-solutions-constructs/aws-wafwebacl-appsync`         |
  | ![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java                   | `software.amazon.awsconstructs.services.wafwebaclappsync` |

  This AWS Solutions Construct implements an AWS WAF web ACL connected to an AWS AppSync API.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from "constructs";
  import { Stack, StackProps } from "aws-cdk-lib";
  import {
    WafwebaclToAppsyncProps,
    WafwebaclToAppsync,
  } from "@aws-solutions-constructs/aws-wafwebacl-appsync";
  // Use an existing AppSync GraphQL API
  const existingGraphQLApi = previouslyCreatedApi;
  // This construct can only be attached to a configured AWS AppSync API.
  new WafwebaclToAppsync(this, "test-wafwebacl-appsync", {
    existingAppsyncApi: existingGraphQLApi,
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_wafwebacl_appsync import WafwebaclToAppsyncProps, WafwebaclToAppsync
  from aws_cdk import (
      aws_route53 as route53,
      Stack
  )
  from constructs import Construct

  existingGraphQLApi = previouslyCreatedApi

  WafwebaclToAppsync(self, 'test_wafwebacl_appsync',
                  existing_appsync_api=existingGraphQLApi
                  )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awsconstructs.services.wafwebaclappsync.*;
  // Use an existing AppSync API
  final existingGraphQLApi = previouslyCreatedApi
  // This construct can only be attached to a configured AWS AppSync API.
  new WafwebaclToAppsync(this, "test-wafwebacl-appsync", new WafwebaclToAppsyncProps.Builder()
          .existingAppsyncApi(existingGraphQLApi)
          .build());
  ```

  | **Name**           | **Type**                                                                                                          | **Description**                                                                                                                                                                                                                                                                                                                                                                   |
  | :----------------- | :---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | existingAppsyncApi | [`appsync.CfnGraphQLApi`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_appsync.CfnGraphQLApi.html) | The existing Appsync CfnGraphQLApi object that will be protected with the WAF web ACL. *Note that a WAF web ACL can only be added to a configured AppSync API, so this construct only accepts an existing CfnGraphQLApi and does not accept CfnGraphQLApiProps.*                                                                                                                  |
  | existingWebaclObj? | [`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACL.html)                 | Existing instance of a WAF web ACL, an error will occur if this and props is set.                                                                                                                                                                                                                                                                                                 |
  | webaclProps?       | [`waf.CfnWebACLProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACLProps.html)       | Optional user-provided props to override the default props for the AWS WAF web ACL. To use a different collection of managed rule sets, specify a new rules property. Use our [`wrapManagedRuleSet(managedGroupName: string, vendorName: string, priority: number)`](../core/lib/waf-defaults.ts) function from core to create an array entry from each desired managed rule set. |

  | **Name**   | **Type**                                                                                                          | **Description**                                                    |
  | :--------- | :---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
  | webacl     | [`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_waf.CfnWebACL.html)                 | Returns an instance of the waf.CfnWebACL created by the construct. |
  | appsyncApi | [`appsync.CfnGraphQLApi`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_appsync.CfnGraphQLApi.html) | Returns an instance of the CfnGraphQLApi used by the pattern.      |

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Deploy a WAF web ACL with 7 [AWS managed rule groups](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list.html).
    * AWSManagedRulesBotControlRuleSet
    * AWSManagedRulesKnownBadInputsRuleSet
    * AWSManagedRulesCommonRuleSet
    * AWSManagedRulesAnonymousIpList
    * AWSManagedRulesAmazonIpReputationList
    * AWSManagedRulesAdminProtectionRuleSet
    * AWSManagedRulesSQLiRuleSet
    *Note that the default rules can be replaced by specifying the rules property of CfnWebACLProps*
  * Send metrics to Amazon CloudWatch

  * User provided AppSync graphql API object is used as-is


pkgId: 98935289178ffb32eb70873d6d547e7edd29f3f993f330c20fdba4d027d234de
name: python-aws-solutions-constructs.aws-wafwebacl-cloudfront
arch: src
version: 2.73.0
epoch: 0
release: 1
summary: CDK constructs for defining an AWS web WAF connected to Amazon CloudFront.
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.aws-wafwebacl-cloudfront-2.73.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  | **Language**     | **Package**        |
  |:-------------|-----------------|
  |![Python Logo](https://docs.aws.amazon.com/cdk/api/latest/img/python32.png) Python|`aws_solutions_constructs.aws_wafwebacl_cloudfront`|
  |![Typescript Logo](https://docs.aws.amazon.com/cdk/api/latest/img/typescript32.png) Typescript|`@aws-solutions-constructs/aws-wafwebacl-cloudfront`|
  |![Java Logo](https://docs.aws.amazon.com/cdk/api/latest/img/java32.png) Java|`software.amazon.awsconstructs.services.wafwebaclcloudfront`|

  This AWS Solutions Construct implements an AWS WAF web ACL connected to Amazon CloudFront.
  Here is a minimal deployable pattern definition:
  Typescript
  ```python
  import { Construct } from 'constructs';
  import { Stack, StackProps } from 'aws-cdk-lib';
  import { CloudFrontToS3 } from '@aws-solutions-constructs/aws-cloudfront-s3';
  import { WafwebaclToCloudFront } from "@aws-solutions-constructs/aws-wafwebacl-cloudfront";
  const cloudfrontToS3 = new CloudFrontToS3(this, 'test-cloudfront-s3', {});
  // This construct can only be attached to a configured CloudFront.
  new WafwebaclToCloudFront(this, 'test-wafwebacl-cloudfront', {
      existingCloudFrontWebDistribution: cloudfrontToS3.cloudFrontWebDistribution
  });
  ```
  Python
  ```python
  from aws_solutions_constructs.aws_cloudfront_s3 import CloudFrontToS3
  from aws_solutions_constructs.aws_wafwebacl_cloudfront import WafwebaclToCloudFront
  from aws_cdk import Stack
  from constructs import Construct
  cloudfront_to_s3 = CloudFrontToS3(self, 'test_cloudfront_s3')

  WafwebaclToCloudFront(self, 'test_wafwebacl_cloudfront',
                        existing_cloud_front_web_distribution=cloudfront_to_s3.cloud_front_web_distribution
                        )
  ```
  Java
  ```java
  import software.constructs.Construct;
  import software.amazon.awscdk.Stack;
  import software.amazon.awscdk.StackProps;
  import software.amazon.awsconstructs.services.cloudfronts3.*;
  import software.amazon.awsconstructs.services.wafwebaclcloudfront.*;
  final CloudFrontToS3 cloudfrontToS3 = new CloudFrontToS3(this, "test-cloudfront-s3",
          new CloudFrontToS3Props.Builder()
                  .build());
  // This construct can only be attached to a configured CloudFront.
  new WafwebaclToCloudFront(this, "test-wafwebacl-cloudfront", new WafwebaclToCloudFrontProps.Builder()
          .existingCloudFrontWebDistribution(cloudfrontToS3.getCloudFrontWebDistribution())
          .build());
  ```

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |existingCloudFrontWebDistribution|[`cloudfront.Distribution`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.Distribution.html)|The existing CloudFront instance that will be protected with the WAF web ACL. *Note that a WAF web ACL can only be added to a configured CloudFront, so this construct only accepts an existing Distribution and does not accept cloudfrontProps.*|
  |existingWebaclObj?|[`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACL.html)|Existing instance of a WAF web ACL, an error will occur if this and props is set.|
  |webaclProps?|[`waf.CfnWebACLProps`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACLProps.html)|Optional user-provided props to override the default props for the AWS WAF web ACL. To use a different collection of managed rule sets, specify a new rules property. Use our [`wrapManagedRuleSet(managedGroupName: string, vendorName: string, priority: number)`](../core/lib/waf-defaults.ts) function from core to create an array entry from each desired managed rule set.|

  | **Name**     | **Type**        | **Description** |
  |:-------------|:----------------|-----------------|
  |webacl|[`waf.CfnWebACL`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACL.html)|Returns an instance of the waf.CfnWebACL created by the construct.|
  |cloudFrontWebDistribution|[`cloudfront.Distribution`](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_cloudfront.Distribution.html)|Returns an instance of cloudfront.Distribution created by the construct.|

  Out of the box implementation of the Construct without any override will set the following defaults:

  * Deploy a WAF web ACL with 7 [AWS managed rule groups](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-list.html).
    * AWSManagedRulesBotControlRuleSet
    * AWSManagedRulesKnownBadInputsRuleSet
    * AWSManagedRulesCommonRuleSet
    * AWSManagedRulesAnonymousIpList
    * AWSManagedRulesAmazonIpReputationList
    * AWSManagedRulesAdminProtectionRuleSet
    * AWSManagedRulesSQLiRuleSet
    *Note that the default rules can be replaced by specifying the rules property of CfnWebACLProps*
  * Send metrics to Amazon CloudWatch

  * User provided CloudFront object is used as-is


pkgId: 4cb7e2e0de91113614ee7ed8bd4481308813bf7462270bf59f5effd4b866327e
name: python-aws-solutions-constructs.core
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: Core CDK Construct for patterns library
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.core-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  The core library includes the basic building blocks of the AWS Solutions Constructs Library. It defines the core classes that are used in the rest of the AWS Solutions Constructs Library.
  > NOTE: Functions in the core library are not part of the published interface for Solutions Constructs. While they are not hidden, using them directly can result in breaking changes outside the scope of a Major release. As many users have expressed an interest in accessing this functionality, we are in the process of exposing this functionality through factories that will produce individual well architected resources. Find the current state  of this effort under `aws-constructs-factories`.

  Core library sets the default properties for the AWS CDK Constructs used by the AWS Solutions Constructs Library constructs.
  For example, the following is the snippet of default properties for S3 Bucket construct created by AWS Solutions Constructs. By default, it will turn on the server-side encryption, bucket versioning, block all public access and setup the S3 access logging.
  ```
  {
    encryption: s3.BucketEncryption.S3_MANAGED,
    versioned: true,
    blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
    removalPolicy: RemovalPolicy.RETAIN,
    serverAccessLogsBucket: loggingBucket
  }
  ```

  The default properties set by the Core library can be overridden by user provided properties. For example, the user can override the Amazon S3 Block Public Access property to meet specific requirements.
  ```
    const stack = new cdk.Stack();
    const props: CloudFrontToS3Props = {
      bucketProps: {
        blockPublicAccess: {
          blockPublicAcls: false,
          blockPublicPolicy: true,
          ignorePublicAcls: false,
          restrictPublicBuckets: true
        }
      }
    };
    new CloudFrontToS3(stack, 'test-cloudfront-s3', props);
    expect(stack).toHaveResource("AWS::S3::Bucket", {
      PublicAccessBlockConfiguration: {
        BlockPublicAcls: false,
        BlockPublicPolicy: true,
        IgnorePublicAcls: false,
        RestrictPublicBuckets: true
      },
    });
  ```

  When a default property from the Core library is overridden by a user-provided property, Constructs will emit one or more warning messages to the console highlighting the change(s). These messages are intended to provide situational awareness to the user and prevent unintentional overrides that could create security risks. These messages will appear whenever deployment/build-related commands are executed, including `cdk deploy`, `cdk synth`, `npm test`, etc.
  Example message:
  `AWS_CONSTRUCTS_WARNING: An override has been provided for the property: BillingMode. Default value: 'PAY_PER_REQUEST'. You provided: 'PROVISIONED'.`

  Override warning messages are enabled by default, but can be explicitly turned on/off using the `overrideWarningsEnabled` shell variable.
  * To explicitly <u>turn off</u> override warnings, run `export overrideWarningsEnabled=false`.
  * To explicitly <u>turn on</u> override warnings, run `export overrideWarningsEnabled=true`.
  * To revert to the default, run `unset overrideWarningsEnabled`.


pkgId: ff1a8434f501f8429a2f0f133c5aa5c9242fe46c998611ea42d87290f1060caf
name: python-aws-solutions-constructs.resources
arch: src
version: 2.72.0
epoch: 0
release: 1
summary: Resource CDK Constructs for patterns library
url: https://github.com/awslabs/aws-solutions-constructs.git
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-solutions-constructs.resources-2.72.0-1.src.rpm
checksum_type: sha256
description:
  <!--END STABILITY BANNER-->
  | **Reference Documentation**:| <span style="font-weight: normal">https://docs.aws.amazon.com/solutions/latest/constructs/</span>|
  |:-------------|:-------------|
  <div style="height:8px"></div>
  The resources library contains reusable resources that can be leveraged from solutions constructs. These resources are deployable units with their own sets of integration tests (to contrast them with the solutions constructs `core` library).
  The first resource being published is the `template-writer`, which does automatic text transformation/substiution, implemented as a custom resource, and run as part of a CloudFormation stack Create/Update/Delete lifecycle. Some use-cases for using the `template-writer` resource can be seen in the `aws-openapigateway-lambda` Solutions Construct, where it transforms an incoming OpenAPI Definition (residing locally or in S3) by auto-populating the `uri` fields of the `x-amazon-apigateway-integration` integrations with the resolved value of the backing lambda functions.


pkgId: 7a12fc5cab8dabbcf16f9db585a9a4f2979ab384fd63911f88e69e512c671e86
name: python-aws-sqs-consumer
arch: src
version: 0.0.15
epoch: 0
release: 1
summary: AWS SQS Consumer
url: https://aws-sqs-consumer-python.readthedocs.io/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-sqs-consumer-0.0.15-1.src.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/aws-sqs-consumer?color=blue)](https://pypi.org/project/aws-sqs-consumer/)
  [![Build passing](https://github.com/HexmosTech/aws_sqs_consumer_python/actions/workflows/tests.yml/badge.svg?event=push)](https://github.com/HexmosTech/aws_sqs_consumer_python/actions/workflows/tests.yml)
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/aws-sqs-consumer?color=g)

  Write Amazon Simple Queue Service (SQS) consumers in Python with simplified interface. Define your logic to process an SQS message. After you're done processing, messages are deleted from the queue.

  Checkout the full documentation - [https://aws-sqs-consumer-python.readthedocs.io/en/latest/](https://aws-sqs-consumer-python.readthedocs.io/en/latest/)



  ```
  pip install aws-sqs-consumer
  ```



  ```python
  from aws_sqs_consumer import Consumer, Message

  class SimpleConsumer(Consumer):
      def handle_message(self, message: Message):
          
          print("Received message: ", message.Body)

  consumer = SimpleConsumer(
      queue_url="https://sqs.eu-west-1.amazonaws.com/12345678901/test_queue",
      polling_wait_time_ms=5
  )
  consumer.start()
  ```



  Checkout the Contribution guidelines - [CONTRIBUTING.md](CONTRIBUTING.md)


pkgId: 7d3a42258744bf2dd92196666c1492f47e84a0726e49eda59793078f12070218
name: python-aws-ssm-copy
arch: src
version: 0.5.3
epoch: 0
release: 1
summary: Copy AWS Parameter Store parameters
url: https://github.com/binxio/aws-ssm-copy
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-ssm-copy-0.5.3-1.src.rpm
checksum_type: sha256
description:
  Copy parameters from a AWS parameter store to another


  ```
  usage: aws-ssm-copy [options] PARAMETER [PARAMETER ...]
  ```

  positional arguments:
  ```
  PARAMETER             source path
  ```

  optional arguments:
  ```
  -h, --help             show this help message and exit
  --one-level, -1        one-level copy
  --recursive, -r        recursive copy
  --overwrite, -f        existing values
  --keep-going, -k       as much as possible, even after an error
  --dry-run, -N          only show what is to be copied
  --source-region REGION to get the parameters from
  --source-profile NAME  to obtain the parameters from
  --region REGION        to copy the parameters to
  --profile NAME         to copy the parameters to
  --target-path NAME     to copy the parameters to
  --key-id ID            to use for parameter values in the destination
  --clear-key-id, -C     clear the kms key id associated with the parameter
  --with-tags, -W        copy the tags too, existing tags will be removed
  ```



  Copy all parameters under /dev to a new profile:
  ```
  aws-ssm-copy --profile binx-io --recursive /dev
  ```

  Copy all parameters under /dev to /production, with a dry run first:
  ```
  aws-ssm-copy -r --dry-run --target-path /production /dev
  ```

  Read more [about copying aws ssm parameters from one account to another](https://binx.io/blog/2020/12/21/how-to-copy-aws-ssm-parameters-from-one-account-to-another/).


pkgId: e8ce886964ad23400597f9d6e4a756fce68759724f557babb10eff6276f2bc9d
name: python-aws-ssm-juggle
arch: src
version: 24.8.0
epoch: 0
release: 1
summary: AWS SSM tool for ECS/EC2 (Shell, Port Forwarding, ...)
url: https://github.com/morph027/aws-ssm-juggle
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-ssm-juggle-24.8.0-1.src.rpm
checksum_type: sha256
description:
  ```
  pip install aws-ssm-juggle
  ```







  ```bash
  curl https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb -o "/tmp/session-manager-plugin.deb"
  mkdir -p ~/bin
  dpkg-deb --fsys-tarfile /tmp/session-manager-plugin.deb | tar --strip-components=4 -C ~/bin/ -xvf - usr/local/sessionmanagerplugin/bin/session-manager-plugin
  ```



  `brew install --cask session-manager-plugin`



  Use [ecs-exec-checker](https://github.com/aws-containers/amazon-ecs-exec-checker) to check for the pre-requisites to use ECS exec.



  Inspired by [ecsgo](https://github.com/tedsmitt/ecsgo).

  Provides a tool to interact with AWS ECS tasks.

  Currently provides:

  * interactive execute-command (e.g. shell)
  * port-forwarding

  You can supply command-line arguments to specify which cluster/service/task/... to use or will be prompted with a nice menu.




  See `ecs-juggle --help` for all features.



  Select all from menu:

  ```bash
  ecs-juggle command
  ```



  Select all from menu:

  ```bash
  ecs-juggle forward
  ```

  Specify port and select the rest from menu:

  ```bash
  ecs-juggle forward --remote-port 8080
  ```



  Inspired by [gossm](https://github.com/gjbae1212/gossm/).

  Provides a tool to interact with AWS EC2 instances.

  Currently provides:

  * interactive shell (e.g. shell)
  * ssh shell
  * port-forwarding



  See `ec2-juggle --help` for all features.



  ```bash
  ec2-juggle start
  ```



  Default:

  ```bash
  ec2-juggle ssh
  ```

  With extra arguments:

  ```bash
  ec2-juggle ssh --ssh-args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -l ubuntu"
  ```



  ```bash
  ecs-juggle forward --remote-port 80
  ```


pkgId: 321c5873ea2fdf321b227384f025157a313a4090d8ec80650797571d3b461340
name: python-aws-ssm-secrets-cli
arch: src
version: 2.6.1
epoch: 0
release: 1
summary: AWS Secret CLI for manage SSM SecureString and SecretsManager
url: https://github.com/lucasvieirasilva/aws-ssm-secrets-cli
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-ssm-secrets-cli-2.6.1-1.src.rpm
checksum_type: sha256
description:
  secrets:
    - name: mysecret
      value: !file myfile.txt
  ```

  This resolver can be used in `parameters[*].value`, `secrets[*].value` and `kms.arn` properties.
  Example:
  ```yaml
  kms:
    arn: !cf_output "mystack.MyOutputKey"
  parameters:
    - name: myparameter-name
      type: String
      value: !cf_output "mystack.MyOutputKey"
  ```
  ```yaml
  kms:
    arn: !cf_output "mystack.MyOutputKey.us-east-1"
  parameters:
    - name: myparameter-name
      type: String
      value: !cf_output "mystack.MyOutputKey.us-east-1"
  ```

  This resolver can be used in `parameters[*].value` and `secrets[*].value` properties.
  Example:
  ```yaml
  kms:
    arn: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  parameters:
    - name: myparameter-name
      type: SecureString
      value: !cmd 'echo "Teste"'
  ```


  CloudFormation Stack Output resolver
  Usage
  ```text
  ${cf:stack-name.output-name}
  ```
  With default values
  ```text
  ${cf:stack-name.output-name, 'mydefaultvalue'}
  ```

  AWS Credentials Session resolver
  Usage
  ```text
  ${session:profile} or ${session:region}
  ```
  With default values
  ```text
  ${session:profile, 'myprofile'} or ${session:region, 'us-east-1'}
  ```

  AWS Provider resolves the AWS CLI `--profile` and `--region` based on the `aws-secrets` CLI.
  Usage
  ```text
  ${aws:profile} or ${aws:region}
  ```
  With default values
  ```text
  ${aws:profile, 'myprofile'} or ${aws:region, 'us-east-1'}
  ```
  **Example**:
  With the config file:
  ```yaml
  kms:
    arn: !cf_output "mystack.KeyArn"
  parameters:
    - description: My SSM Parameter
      name: /my/ssm/param
      type: SecureString
      value: !cmd 'aws s3 ls ${aws:profile} ${aws:region, "eu-west-1"}'
  ```
  When run the `aws-secrets` with the `--profile` or `--region`
  ```shell
  aws-secrets -e conf.yaml --profile myprofile --region us-east-1
  ```
  The AWS CLI command will be execute this command:
  ```shell
  aws s3 ls --profile myprofile --region us-east-1
  ```
  If `--profile` not be speficied in the `aws-secrets` execution, like this:
  ```shell
  aws-secrets -e conf.yaml --region us-east-1
  ```
  The AWS CLI command will be execute this command:
  ```shell
  aws s3 ls --region eu-west-1
  ```
  > The `--region` continue in the command because the resolver has the default value with `eu-west-1` in the config file.

  You also can include Tags on a global level:
  ```yaml
  tags:
    SomeKey: SomeValue
  kms:
    arn: "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
  parameters: ...
  secrets: ...
  ```


pkgId: 82fb4e1e382cc39829ea1bdfa36175d0ce65dd349bb86f77c6e196605271a309
name: python-aws-ssm-tool
arch: src
version: 2024.3.14.5.51
epoch: 0
release: 1
summary: AWS SSM tool
url: https://github.com/Robot-Wranglers/aws-ssm-tool/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-ssm-tool-2024.3.14.5.51-1.src.rpm
checksum_type: sha256
description:
  <div class="toc">
  <ul>
  <li><a href="#overview">Overview</a></li>
  <li><a href="#installation">Installation</a></li>
  <li><a href="#usage">Usage</a></li>
  <li><a href="#usage-from-docker">Usage from Docker</a></li>
  </ul>


pkgId: 57cc31d14b8ccd148e27c6f40d72af0b0becc0932bd343eb72ad741673e319b7
name: python-aws-sso-cred-restore
arch: src
version: 1.2.0
epoch: 0
release: 1
summary: A wrapper for executing a command with AWS CLI v2 and SSO, inspired from aws2-wrap
url: https://github.com/claytonsilva/aws-sso-cred-restore
rpm_license: GNU General Public License v3 (GPLv3)
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-sso-cred-restore-1.2.0-1.src.rpm
checksum_type: sha256
description:
  <!-- [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=linaro-its_aws2-wrap&metric=alert_status)](https://sonarcloud.io/dashboard?id=linaro-its_aws2-wrap) -->


  This is script is inspired from `aws2-wrap` and solve problem with old sdk's  like aws-sdk-go and turn safe our
  work with tools like terraform.



  Work with terraform is more safe if we use only profile configuration and  work with `workspaces` feature.

  ```hcl
  provider "aws" {
  	 profile = "${terraform.env}"
  	 region  = "${var.region}"
  }
  ```

  But aws sso cli command cannot configure credentials file, and aws-sdk-go cannot work with new model of profile config.

  Using environment variables, the configuration overwrite profile option on provider block on terraform, and this is *dangerous*.

  This wrapper solve `temporary` (hello aws and hashicorp, solve this plis!!) this problem.




  https://pypi.org/project/aws-sso-cred-restore

  `pip install aws-sso-cred-restore==<VERSION>`



  `aws-sso-cred-restore --profile <awsprofilename-or-prefix>`

  or run to all profiles in your config

  `aws-sso-cred-restore`

  This command will get credentials using active aws sso access key section file
  and restore in `~/.aws/credentials`




  There may be circumstances when it is easier/better to set the appropriate environment variables so that they can be re-used by any `aws` command.

  Since the script cannot directly set the environment variables in the calling shell process, it is necessary to use the following syntax:

  `eval "$(aws-sso-cred-restore --profile <awsprofilename-or-prefix> --export)"`


pkgId: 219f15f1ef943e10d0ee95213627b8b56338a7cbc23de2df7c29160f074009f5
name: python-aws-sso-credential-process
arch: src
version: 0.3.1
epoch: 0
release: 1
summary: Bring AWS SSO-based credentials to the AWS SDKs until they have proper support
url: https://github.com/benkehoe/aws-sso-credential-process
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-sso-credential-process-0.3.1-1.src.rpm
checksum_type: sha256
description:
  **Get AWS SSO working with all the SDKs that don't understand it yet**

  Currently, [AWS SSO](https://aws.amazon.com/single-sign-on/) support is implemented in the [AWS CLI v2](https://aws.amazon.com/blogs/developer/aws-cli-v2-is-now-generally-available/), but the capability to usage the credentials retrieved from AWS SSO by the CLI v2 has not been implemented in the various AWS SDKs. However, they all support the [credential process](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html) system. This tool bridges the gap by implementing a credential process provider that understands the SSO credential retrieval and caching system. Once AWS implements the necessary support in the SDK for your favorite language, this tool will no longer be necessary.

  If you try this and your tools still don't work with the credentials, you can get the credentials themselves using [aws-export-credentials](https://github.com/benkehoe/aws-export-credentials), which can also inject them as environment variables for your program.



  1. I recommend you install [`pipx`](https://pipxproject.github.io/pipx/), which installs the tool in an isolated virtualenv while linking the script you need.

  Mac:
  ```bash
  brew install pipx
  pipx ensurepath
  ```

  Other:
  ```bash
  python3 -m pip install --user pipx
  python3 -m pipx ensurepath
  ```

  2. Install the tool.
  ```bash
  pipx install aws-sso-credential-process
  ```

  3. Set up your `.aws/config` file for AWS SSO as normal (see step 6 for how to make this easier):

  ```
  [profile my-sso-profile]

  region = us-east-2
  output = yaml

  sso_start_url = https://something.awsapps.com/start
  sso_region = us-east-2
  sso_account_id = 123456789012
  sso_role_name = MyLeastPrivilegeRole
  ```

  4. Then, just add a [`credential_process` entry](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sourcing-external.html) to the profile, using the `--profile` flag with the same profile name (see step 6 for how to make this easier):

  ```
  [profile my-sso-profile]

  credential_process = aws-sso-credential-process --profile my-sso-profile

  region = us-east-2
  output = yaml

  sso_start_url = https://something.awsapps.com/start
  sso_region = us-east-2
  sso_account_id = 123456789012
  sso_role_name = MyLeastPrivilegeRole

  ```

  5. You're done! Test it out:
  ```bash
  aws sso login --profile my-sso-profile
  python -c "import boto3; print(boto3.Session(profile_name='my-sso-profile').client('sts').get_caller_identity())"
  ```

  NOTE: if you test it out with your favorite script or application and get something like `NoCredentialProviders: no valid providers in chain.`, you may need to set the environment variable `AWS_SDK_LOAD_CONFIG=1`. The Go SDK, and applications built with the Go SDK (like Terraform) [don't automatically use your `.aws/config` file](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html).


  6. Streamline the process. If you've got one main AWS SSO configuration, set up your `.bashrc` (or similar) like this:
  ```
  export AWS_CONFIGURE_SSO_DEFAULT_SSO_START_URL=https://something.awsapps.com/start
  export AWS_CONFIGURE_SSO_DEFAULT_SSO_REGION=us-east-2
  ```

  Use `aws-configure-sso-profile` to set up your AWS SSO profiles. This will set up your profile as shown above interactively, including prompting you to select from available accounts and roles. It will look something like this:
  ```
  $ aws-configure-sso-profile --profile my-sso-profile
  SSO start URL [https://something.awsapps.com/start]:
  SSO Region [us-east-2]:
  Attempting to automatically open the SSO authorization page in your default browser.
  If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

  https://device.sso.us-east-2.amazonaws.com/

  Then enter the code:

  ABCD-WXYZ
  There are N AWS accounts available to you.
  Using the account ID 123456789012
  The only role available to you is: MyLeastPrivilegeRole
  Using the role name "MyLeastPrivilegeRole"
  CLI default client Region [None]: us-east-2
  CLI default output format [None]: yaml

  To use this profile, specify the profile name using --profile, as shown:

  aws s3 ls --profile my-sso-profile
  ```



  The `aws-configure-sso-profile` tool wraps `aws configure sso` to help you set up profiles in `.aws/config`; you can set the environment variables `AWS_CONFIGURE_SSO_DEFAULT_SSO_START_URL` and `AWS_CONFIGURE_SSO_DEFAULT_SSO_REGION` to set defaults for those values so you're not typing them all the time. The tool will set up the `credential_process` entry as well. Note that `--profile` is required (unlike `aws configure sso`).

  The order of configuration matches the AWS CLI and SDKs: values from CLI parameters take precedence, followed by env vars, followed by settings in `.aws/config`.

  The `--profile` parameter on `aws-sso-credential-process` doesn't work like the same parameter on the AWS CLI, and cannot be set from the environment; it's intended only to help make the `credential_process` entry in a profile more concise.



  The most important thing to determine is whether or not you want to allow interactive authentication, which is off by default (so that the behavior is the same as the AWS CLI v2).

  When interactive authentication is off, you need to use the CLI v2's `aws sso login` to login through AWS SSO. If you haven't logged in or your session has expired, the process will fail and interrupt whatever you're doing.

  With interactive authentication turned on, the functionality of `aws sso login` will be triggered automatically; a browser will pop up to prompt you to log in (or, if you're already logged in, it will prompt you to approve the login). This is useful when you're running scripts interactively, but bad for automated processes that are incapable of logging in.

  **To enable interactive authentication, the best way is to set `AWS_SSO_INTERACTIVE_AUTH=true` in your environment.** This lets you control whether interactive auth is enabled for a given profile depending on the situation you're using it for. Otherwise, you can set `sso_interactive_auth=true` in your profile in `.aws/config`, or use the `--interactive` flag for the process. Note that you can use the `--noninteractive` flag to disable interactive auth even if the environment variable is set.

  When setting up a profile using `aws-configure-sso-profile`, you can use `--set-auth-interactive` or `--set-auth-noninteractive` to fix that profile as either interactive or noninteractive, respectively.

  Note that if you've got your profile set up as shown above, the AWS CLI v2 won't get interactive authentication, because it will natively use the profile configuration, skipping this tool as a credential process. If you *really* want interactive auth with the CLI, you could put the AWS SSO configuration information as parameters to the tool in the credential process directive, instead of directly in the profile, and then the CLI will use credential process as well, but I don't really recommend this route.


  Setting the `--debug` flag or the env var `AWS_SSO_CREDENTIAL_PROCESS_DEBUG=true` will cause debug output to be sent to `.aws/sso/aws-sso-credential-process-log.txt`. Note that this file will contain your credentials, though these credentials are both short-lived and also cached within the same directory.



  * `.aws/config`: `sso_account_id`
  * env var: `AWS_SSO_ACCOUNT_ID`
  * parameter: `--account-id`



  * `.aws/config`: `sso_role_name`
  * env var: `AWS_SSO_ROLE_NAME`
  * parameter: `--role-name`



  * `.aws/config`: `sso_start_url`
  * env var: `AWS_SSO_START_URL`
  * parameter: `--start-url`



  * `.aws/config`: `sso_region`
  * env var: `AWS_SSO_REGION`
  * parameter: `--region`


pkgId: 5c2ab830321aef02a026734adae4198b916e18e02ac64099d96cd2c7ab61d4e4
name: python-aws-sso-lib
arch: src
version: 1.14.0
epoch: 0
release: 1
summary: Library to make AWS SSO easier
url: https://github.com/benkehoe/aws-sso-util/blob/master/lib/README.md
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-sso-lib-1.14.0-1.src.rpm
checksum_type: sha256
description:
  `aws-sso-lib` allows you to programmatically interact with AWS IAM Identity Center (formerly AWS SSO).

  The primary functions that will be of interest are available at the package level:
  * `get_boto3_session`: Get a boto3 session for a specific account and role.
  * `login`: ensure the user is logged in to Identity Center, with dispatch to the browser.
  * `list_available_accounts` and `list_available_roles`: discover the access the user has.
  * `list_assignments`: for admin purposes, iterate over all assignments in Identity Center, which is currently hard to do through the API.

  `aws-sso-util` is a command-line utility built on `aws-sso-lib` for interacting with Identity Center; see the details of that project [here](https://github.com/benkehoe/aws-sso-util).



  ```
  pip install --user aws-sso-lib
  python -c "import aws_sso_lib; aws_sso_lib.login('https://my-start-url.awsapps.com/start', 'us-east-2')"
  ```



  Often when writing a script, you know the exact account and role you want the script to use.
  You could configure a profile in your `~/.aws/config` for this (perhaps using `aws-sso-util configure profile`), but especially if multiple people may be using the script, it's more convenient to have the configuration baked into the script itself.
  `get_boto3_session()` is the function to do that with.

  ```python
  get_boto3_session(start_url, sso_region, account_id, role_name, *, region,
      login=False,
      sso_cache=None,
      credential_cache=None)
  ```

  * `start_url`: [REQUIRED] The start URL for the Identity Center instance.
  * `sso_region`: [REQUIRED] The AWS region for the Identity Center instance.
  * `account_id`: [REQUIRED] The AWS account ID to use.
  * `role_name`: [REQUIRED] The Identity Center role (aka PermissionSet) name to use.
  * `region`: [REQUIRED] The AWS region for the boto3 session (note, required but keyword-only).
  * `login`: Set to `True` to interactively log in the user if their Identity Center credentials have expired.
  * `sso_cache`: A dict or dict-like object for Identity Center credential caching to replace the default file cache in `~/.aws/sso/cache`.
  * `credential_cache`: A dict or dict-like object to cache the role credentials in to replace the default in-memory cache.
  * Returns a [boto3 Session object](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html) configured for the account and role.

  For more control over the login process, use the `login` function separately.



  While the functions that require the user to be logged in let you specify `login=True` to interactively log in the user if they are not already logged in, you can have more control over the process, or retrieve the access token, using `login()`.

  If the user is not logged in or `force_refresh` is `True`, it will attempt to log in.
  If the user is logged in and `force_refresh` is `False`, no action is taken.

  Normally, it will attempt to automatically open the user's browser to log in, as well as printing the URL and code to stderr as a fallback. However, if `disable_browser` is `True`, or if `disable_browser` is `None` (the default) and the environment variable `AWS_SSO_DISABLE_BROWSER` is set to `1` or `true`, only the message with the URL and code will be printed.

  A custom message can be printed by setting `message` to a template string using `{url}` and `{code}` as placeholders.
  The message can be suppressed by setting `message` to `False`.

  To fully control the communication with the user, use the `user_auth_handler` parameter.
  It must be a callable taking four keyword arguments: `verificationUri`, `userCode`, `verificationUriComplete`, and `expiresAt` (a datetime).
  Provide `verificationUri` and `userCode` to the user if they are expected to type them in manually (e.g., on a separate device); `verificationUriComplete` has the userCode embedded in it, suitable for copying, linking, or a browser popup.
  The function must return promptly or it will block the login process.

  ```python
  login(start_url, sso_region, *,
      force_refresh=False,
      expiry_window=None,
      disable_browser=None,
      message=None,
      outfile=None,
      user_auth_handler=None,
      sso_cache=None)
  ```

  * `start_url`: [REQUIRED] The start URL for the Identity Center instance.
  * `sso_region`: [REQUIRED] The AWS region for the Identity Center instance.
  * `force_refresh`: Set to `True` to always go through the authentication process.
  * `expiry_window`: A datetime.timedelta (or number of seconds), or callable returning such, specifying the minimum duration any existing token must be valid for.
  * `disable_browser`: Set to `True` to skip the browser popup and only print a message with the URL and code.
  * `message`: A message template to print with the fallback URL and code, or `False` to suppress the message.
  * `outfile`: The file-like object to print the message to (stderr by default)
  * `user_auth_handler`: override browser popup and message printing and use the given function instead.
  * `sso_cache`: A dict or dict-like object for Identity Center credential caching, to override the default file cache in `~/.aws/sso/cache`.
  * Returns the token dict as returned by [sso-oidc:CreateToken](https://docs.aws.amazon.com/singlesignon/latest/OIDCAPIReference/API_CreateToken.html), which contains the actual authorization token, as well as the expiration.



  Identity Center provides programmatic access to the permissions that a user has.
  You can access this through `list_available_accounts()` and `list_available_roles()`.

  With both, you can set `login=True` to interactively log in the user if they are not already logged in.

  Note that these functions return iterators; they don't return a list, because the number of roles may be very large and you shouldn't have to wait for the entire list to be created to start processing.
  You can always get a list by, for example, `list(list_available_roles(...))`.

  ```python
  list_available_accounts(start_url, sso_region, *, login=False)
  ```

  * `start_url`: The start URL for the Identity Center instance.
  * `sso_region`: The AWS region for the Identity Center instance.
  * `login`: Set to `True` to interactively log in the user if their Identity Center credentials have expired.
  * Returns an iterator that yields account id and account name.

  ```python
  list_available_roles(start_url, sso_region, account_id=None, *, login=False)
  ```

  * `start_url`: [REQUIRED] The start URL for the Identity Center instance.
  * `sso_region`: [REQUIRED] The AWS region for the Identity Center instance.
  * `account_id`: Optional account id or list of account ids to check.
    * If not set, all accounts available to the user are used.
  * `login`: Set to `True` to interactively log in the user if their Identity Center credentials have expired.
  * Returns an iterator that yields account id, account name, and role name.



  The Identity Center API only allows you to [list assignments for a specific account _and_ permission set](https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListAccountAssignments.html).
  To find all your assignments, you need to iterate over all accounts, and then interate over all permission sets.
  `list_assignments()` does this work for you.

  Unlike the other functions list above, this uses admin APIs, which require AWS credentials, rather than taking as input a start URL and region.

  `list_assignments` returns an iterator over `Assignment` named tuples, which have the following fields:

  * `instance_arn`
  * `principal_type`
  * `principal_id`
  * `principal_name`
  * `permission_set_arn`
  * `permission_set_name`
  * `target_type`
  * `target_id`
  * `target_name`

  The name fields may be `None`, if the names are not known or looked up.
  By default, principal and permission set names are not retrieved, nor are account names for accounts that have been provided as explicit targets.

  If you don't specify `instance_arn` and/or `identity_store_id`, these will be looked up using the [ListInstances API](https://docs.aws.amazon.com/singlesignon/latest/APIReference/API_ListInstances.html), which today returns at most one instance (with associated identity store).

  An assignment is the combination of a principal (a user or a group), a permission set, and a target (an AWS account).
  For each of these values, you can provide either an explicit specification, or a filter function.

  You can provide an OU as a target, which will use all accounts in that OU, and optionally all accounts recursively in child OUs as well.

  ```python
  list_assignments(
      session,
      instance_arn=None,
      identity_store_id=None,
      principal=None,
      principal_filter=None,
      permission_set=None,
      permission_set_filter=None,
      target=None,
      target_filter=None,
      get_principal_names=False,
      get_permission_set_names=False,
      get_target_names=False,
      ou_recursive=False)
  ```

  * `session`: [REQUIRED] boto3 session to use
  * `instance_arn`: The Identity Center instance to use, or it will be looked up using ListInstances
  * `identity_store_id`: The identity store to use if principal names are being retrieved or it will be looked up using ListInstances
  * `principal`: A principal specification or list of principal specifications.
      * A principal specification is a principal id or a 2-tuple of principal type and id.
  * `principal_filter`: A callable taking principal type, principal id, and principal name (which may be `None`), and returning `True` if the principal should be included.
  * `permission_set`: A permission set arn or id, or a list of the same.
  * `permission_set_filter`: A callable taking permission set arn and name (name may be `None`), returning True if the permission set should be included.
  * `target`: A target specification or list of target specifications.
      * A target specification is an account or OU id, or a 2-tuple of target type, which is either AWS_ACCOUNT or AWS_OU, and target id.
  * `target_filter`: A callable taking target type, target id, and target name (which may be `None`), and returning `True` if the target should be included.
  * `get_principal_names`: Set to `True` to retrieve names for principals in assignments.
  * ` get_permission_set_names`: Set to `True` to retrieve names for permission sets in assignments.
  * `get_target_names`: Set to `True` to retrieve names for targets in assignments, when they are explicitly provided as targets. For OUs as targets or if no targets are specified, the account names will be retrieved automatically during the enumeration process.
  * `ou_recursive`: Set to `True` if an OU is provided as a target to get all accounts including those in child OUs.
  * Returns an iterator over `Assignment` tuples


pkgId: 8dcae8bf9f557d50bd4b744eb114f847009bcabff18819735495910b391cb284
name: python-aws-sso-magic
arch: src
version: 1.0.36
epoch: 0
release: 1
summary: Magic credentials on the AWS CLI home using AWS SSO login
url: https://github.com/javiortizmol/aws-sso-magic
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-sso-magic-1.0.36-1.src.rpm
checksum_type: sha256
description:
  This tool update the aws credentials file for the default profile from the aws sso login.

  This solution mixed the following repositories:

  1. [aws-sso-util](https://github.com/benkehoe/aws-sso-util) AWS SSO has some rough edges, and aws-sso-util is here to smooth them out, hopefully temporarily until AWS makes it better.
  2. [aws-sso-credentials](https://github.com/NeilJed/aws-sso-credentials) A simple Python tool to simplify getting short-term credential tokens for CLI/Boto3 operations when using AWS SSO.



  - [src](src) - The main folder with the aws_sso_magic folder with the .py files & the requirements.txt.
      - [aws_sso_magic](src/aws_sso_magic)
  - [docker-build.sh](cli/docker-build.sh) - A docker build tool (Linux/MacOS) to build the docker image locally.
      ```bash
      sudo ./docker-build.sh
      ```
  - [pyproject.toml](pyproject.toml) - The metadata file with the dependencies and application information.
  - [Dockerfile](Dockerfile) - The docker file with the instructions to build the aws-sso-magic cli.
  - [eks-login](utils/eks-login) - A script tool to add on the /usr/local/bin (Only for linux/macOS or Windows WSL).
      ```bash
      eks-login develop-readonly
      ```
  NOTE: I got this interesting repo of [marianonamoroso](https://github.com/marianonamoroso), He developed an awesome shell script to get information from the eks cluster, for more details click on https://github.com/marianonamoroso/kubernetes, and heyy give to him an star :).




  1. [Python 3.9](https://www.python.org/downloads/) installed.
  2. [AWS CLI v2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) installed, please click on the link depending of your OS.



  1. Follow the pyp [aw-sso-magic](https://pypi.org/project/aws-sso-magic/) project instructions to install it.

      Note: If you want upgrade it, please run this `pip install aws-sso-magic --upgrade`



  1. Please follow the instructions from the docker hub repository of [aws_sso_magic](https://hub.docker.com/r/javiortizmol/aws_sso_magic)



  These steps will create the config files on the paths $HOME/.aws and $HOME/.aws-sso-magic.

  1. Execute the following command to configure the sso tool: `aws-sso-magic configure`
  2. Type the following information:
      - SSO start URL
      - SSO Region
      - Select the default profile of SSO
      - CLI default client Region
      - CLI default output format
      - CLI profile name. Eg: default
      - Enter only the name of the proxy role to use by default. Eg: MyAdminRole or just press Enter (This option will mandatory for the --eks flag)
  3. Optional: In case that you want to set an account alias, you can modify the file on $HOME/.aws-sso-magic/config adding the [AliasAccounts] section with key (account name) and value (alias account) Eg:
      ```
      [AliasAccounts]
      test1 = dev
      test2 = qa
      test3 = staging
      test4 = prod
      ```
      making the above configuration, it will now show the aliases in the profile selection menu when aws-sso-magic login command is executed.
      ```
      [?] Please select an AWS config profile:
        dev-admin
      > qa-admin
        staging-admin
        prod-admin
      ```




  1. Execute the following command to select and log into the aws accounts: `aws-sso-magic login`
  2. Execute the following command to log: `aws-sso-magic login` and select the profile to use or `aws-sso-magic login --profile ssoprofile` if you already know the profile name.

  NOTE: If you don't want to copy the credentials to the default profile, you can use the --custom-profile flag to create the profile with the name that you prefer and copy the credentials there.
  Eg: `aws-sso-magic login --profile ssoprofile --custom-profile myprofile`




  1. [kubectl](https://kubernetes.io/docs/tasks/tools/) installed.
  2. `aws-sso-magic login` or `aws-sso-magic login --profile myprofile` executed previouly.


  1. Go to the file $HOME/.aws-sso-magic/config and replace the string "replacethis" on the section default-proxy-role-name if you want to use that role name for all profiles.
      ```
      [default-proxy-role-name]
      proxy_role_name = replacethis
      ```

      or just add the profile section in the file. Eg:

      ```
      [myprofile]
      proxy_role_name = myrolename
      ```
  2. Execute the following command to select and log the eks cluster: `aws-sso-magic login --eks` or if you have configured an aws account as trusted entity having granted to assume roles on the rest of the accounts from there, please execute `aws-sso-magic login` selecting profile (account and role configured as trusted identity) and then execute `aws-sso-magic login --eks --eks-profile env-eks-profile`. Eg:
      ```
      aws-sso-magic login --profile main-admin
      aws-sso-magic login --eks --eks-profile qa-admin
      ```
  3. Please select the EKS cluster or send the cluster name using the flag --cluster. Eg: `aws-sso-magic login --eks --cluster myekscluster`
  4. Copy and paste the commands according to your OS.

      NOTE: If you will select another profile, please first unset the AWS_PROFILE environment variable or close this terminal and open a new one



  - [aw-sso-magic](https://pypi.org/project/aws-sso-magic/)

  - [aws_sso_magic](https://hub.docker.com/r/javiortizmol/aws_sso_magic)


pkgId: 54239eb567a71c58d98b2434beca41c2e26687c540915b59206ded5326fadd04
name: python-aws-sso-util
arch: src
version: 4.33.0
epoch: 0
release: 1
summary: Utilities to make AWS SSO easier
url: https://github.com/benkehoe/aws-sso-util
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-sso-util-4.33.0-1.src.rpm
checksum_type: sha256
description:
  [AWS IAM Identity Center](https://aws.amazon.com/single-sign-on/) (formerly AWS SSO) has some rough edges, and `aws-sso-util` is here to smooth them out, hopefully temporarily until AWS makes it better.

  `aws-sso-util` contains utilities for the following:
  * Configuring `.aws/config`
  * Logging in/out
  * AWS SDK support
  * Looking up identifiers
  * CloudFormation

  The underlying Python library for Identity Center authentication is [`aws-sso-lib`](https://pypi.org/project/aws-sso-lib/), which has useful functions like interactive login, creating a boto3 session for specific a account and role, and the programmatic versions of the `lookup` functions in `aws-sso-util`.

  `aws-sso-util` supersedes `aws-sso-credential-process`, which is still available in its original form [here](https://github.com/benkehoe/aws-sso-credential-process).
  Read the updated docs for `aws-sso-util credential-process` [here](docs/credential-process.md).



  1. I recommend you install [`pipx`](https://pipxproject.github.io/pipx/), which installs the tool in an isolated virtualenv while linking the script you need.

  Mac [and Linux](https://docs.brew.sh/Homebrew-on-Linux):
  ```bash
  brew install pipx
  pipx ensurepath
  ```

  Other:
  ```bash
  python3 -m pip install --user pipx
  python3 -m pipx ensurepath
  ```

  2. Install
  ```bash
  pipx install aws-sso-util
  ```

  3. Learn
  ```bash
  aws-sso-util --help
  ```



  See the full docs at [https://github.com/benkehoe/aws-sso-util](https://github.com/benkehoe/aws-sso-util)


pkgId: 1295a6fa8bf673ba6129f7673ccd443dc0e2978284d528bf46277c1db6b19dd4
name: python-aws-stuff-doer
arch: src
version: 0.2.0
epoch: 0
release: 1
summary: ASD is a utility to help manage your AWS projects and sso sessions.
url: https://github.com/aphexlog/aws-stuff-doer
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-stuff-doer-0.2.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/aws-stuff-doer.svg)](https://badge.fury.io/py/aws-stuff-doer)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  **AWS Stuff Doer (ASD)** is your go-to tool for managing AWS Single Sign-On (SSO). Designed for both developers and administrators, ASD simplifies your AWS SSO workflow, allowing you to run custom shell commands with specific profiles and export temporary AWS credentials seamlessly.



  - **Easy Integration**: Effortlessly integrate with your existing AWS infrastructure.
  - **Secure Authentication**: Improve security with robust SSO capabilities.
  - **Customizable**: Tailor ASD to meet your unique requirements.
  - **Run Custom Commands**: Execute shell commands using AWS profiles and export temporary credentials securely in memory.
  - **Temporary AWS Credentials**: Access temporary AWS credentials specific to a profile, securely available in memory.



  Install ASD using pip:

  ```bash
  pip install aws-stuff-doer
  ```



  Invoke ASD with the following command syntax:

  ```bash
  asd [-h] [-p PROFILE] [--open-sso] [--open] [-l] [--version] [command ...]
  ```

  **ASD**: The AWS Utility to manage AWS SSO and AWS CLI profiles conveniently.


  - **command**: Command followed by its arguments to run in the shell


  - **-h, --help**: Show this help message and exit
  - **-p PROFILE, --profile PROFILE**: Specify AWS profile name
  - **--open-sso**: Open AWS SSO user console
  - **--open**: Open AWS account console
  - **-l, --list**: List available profiles
  - **--version**: Show program's version number and exit


pkgId: 0dfe2537bec3abb63e526149169d2ef411a1358e14c9fae83d147c5adc58c0e0
name: python-aws-syndicate
arch: src
version: 1.15.0
epoch: 0
release: 1
description: Documentation you can find [here](https://github.com/epam/aws-syndicate/wiki)
url: https://github.com/epam/aws-syndicate
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-syndicate-1.15.0-1.src.rpm
checksum_type: sha256
summary:
  AWS-syndicate is an Amazon Web Services deployment framework written in Python, which allows to easily deploy serverless applications using resource descriptions.


pkgId: be407d76d5422243785fd0f0dc76c0c89abc7303a4d41929493e02be3c77c45f
name: python-aws-testlib
arch: src
version: 0.1.10
epoch: 0
release: 1
url: https://pypi.org/project/aws-testlib/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-testlib-0.1.10-1.src.rpm
checksum_type: sha256
summary:
  Provides support functions for testing AWS testing and mocking, namely AWS API Gateway Velocity engine

description:
  Contains various utilities and methods for testing SAM and other AWS services that use boto3 and
  botocore.





  This library contains methods that allow to inflate Velocity templates in the same way that is supported
  by AWS api gateway.

  This functionality uses embedded Java jar file that contains all necessary functions. Because of this, Java
  runtime is required to be installed on the system.


pkgId: 8c8d4333890b1ef15fdc530aceb466eb8a29d9f87a7fd4c789a3de7c34742d99
name: python-aws-tools
arch: src
version: 1.1.9
epoch: 0
release: 1
summary: Switching between multiple AWS accounts & renewing API access keys
url: https://github.com/bartekj/aws-tools
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-tools-1.1.9-1.src.rpm
checksum_type: sha256
description:
  This package provides tools for AWS platform, such as:
  -  switching between multiple accounts
  -  renewing API access keys
  and others.
  The main reason why aws-tools came to be, was using `awscli`_ with different access keys in the secure and easy way.


pkgId: 44f9e9f3d3f1026e08c130eebcf495329dfe67473f0ee92d6f080321b405843f
name: python-aws-utility-library-roshinswebapp
arch: src
version: 1.0.1
epoch: 0
release: 1
summary: A Python library for AWS utilities (Lambda, SNS, SQS, DynamoDB, and S3)
url: https://pypi.org/project/aws-utility-library-roshinswebapp/
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-utility-library-roshinswebapp-1.0.1-1.src.rpm
checksum_type: sha256
description:
  - Lambda: Invoke functions.
  - SNS: Publish messages to topics with optional subjects.
  - SQS: Retrieve and delete messages from queues.
  - DynamoDB: Store,Scan and get items in tables.


pkgId: b6bafa9842b9b0d580f71e9adfdca49143e5527b90758257141b89a3e82d614c
name: python-aws-utility-library-savicppapp
arch: src
version: 1.0.1
epoch: 0
release: 1
summary: A Python library for AWS utilities (Lambda, SNS, SQS, DynamoDB, and S3)
url: https://pypi.org/project/aws-utility-library-savicppapp/
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-utility-library-savicppapp-1.0.1-1.src.rpm
checksum_type: sha256
description:
  A Python library designed to simplify interactions with AWS services, making it easier
  for developers to integrate and manage AWS resources in their applications.
  This library provides prebuilt functions for commonly used services such as Lambda, SNS, SQS, DynamoDB,


pkgId: 142e1433e608528b3ff0219325dbfd38a71af5e71fddbb6a228f25f7f833f78c
name: python-aws-utils
arch: src
version: 0.1
epoch: 0
release: 1
summary: aws utilities package
url: https://github.com/thuitaw/aws-utils.git
rpm_license: GPL
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-utils-0.1-1.src.rpm
checksum_type: sha256
description:
  A collection of simple python modules that interact with various aws services.
  This Is intended to be a pip installable package.
  Its has nice abstractions of boto, the de facto python library for interfacing with aws services


pkgId: d946078922f146ec39cd73785a795d53c0ad6bec12dad4f732ba21f1fc269515
name: python-aws-wand
arch: src
version: 1.0.4
epoch: 0
release: 1
summary: Simple API to train ML models on AWS
url: https://pypi.org/project/aws-wand/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-wand-1.0.4-1.src.rpm
checksum_type: sha256
description:
  This is a test package which helps to implement model training pipeline on Amazon Web Services. The main point is you should have created IAM user with administrator permissions. Using this API you're able to create users with safe permissions automatically and orchestrate your S3 buckets or EC2 instances. Thus, having some Docker image with your training code, you can automatically load your data to a S3 bucket, create a EC2 instance and train your model on your data.


pkgId: c6d04faf5fa5d48453ea583d7da136a42ca07db81240bec6fd51456531831dd5
name: python-aws-xray-lambda-segment-shim
arch: src
version: 0.5.3
epoch: 0
release: 1
url: https://github.com/sam-martin/aws-xray-lambda-segment-shim
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-xray-lambda-segment-shim-0.5.3-1.src.rpm
checksum_type: sha256
summary:
  A shim which faciliates the AWS X-Ray tracing of Lambda Functions invoked by triggers which don't have native X-Ray support.

description:
  |shield1| |shield2|
  | **Full Docs:** https://aws-xray-lambda-segment-shim.readthedocs.io
  | **GitHub:** https://github.com/Sam-Martin/aws-xray-sqs-lambda-segment-shim
  It's not currently possibly follow an AWS Xray trace through a Lambda Function triggered by an SQS Queue.
  Unless you use ``aws-xray-lambda-segment-shim``!


pkgId: 1c6c027bc19821c14fbd24ecb2e45e3635319591e3fd2145ed60c6104e13d290
name: python-aws-xray-sdk
arch: src
version: 2.14.0
epoch: 0
release: 1
url: https://github.com/aws/aws-xray-sdk-python
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws-xray-sdk-2.14.0-1.src.rpm
checksum_type: sha256
summary:
  The AWS X-Ray SDK for Python (the SDK) enables Python developers to record and emit information from within their applications to the AWS X-Ray service.

description:
  ![Build Status](https://github.com/aws/aws-xray-sdk-python/actions/workflows/IntegrationTesting.yaml/badge.svg)
  [![codecov](https://codecov.io/gh/aws/aws-xray-sdk-python/branch/master/graph/badge.svg)](https://codecov.io/gh/aws/aws-xray-sdk-python)



  AWS X-Ray supports using OpenTelemetry Python and the AWS Distro for OpenTelemetry (ADOT) Collector to instrument your application and send trace data to X-Ray. The OpenTelemetry SDKs are an industry-wide standard for tracing instrumentation. They provide more instrumentations and have a larger community for support, but may not have complete feature parity with the X-Ray SDKs. See [choosing between the ADOT and X-Ray SDKs](https://docs.aws.amazon.com/xray/latest/devguide/xray-instrumenting-your-app.html#xray-instrumenting-choosing) for more help with choosing between the two.

  If you want additional features when tracing your Python applications, please [open an issue on the OpenTelemetry Python Instrumentation repository](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/new?labels=feature-request&template=feature_request.md&title=X-Ray%20Compatible%20Feature%20Request).



  AWS X-Ray SDK for Python versions `>2.11.0` has dropped support for Python 2.7, 3.4, 3.5, and 3.6.



  ![Screenshot of the AWS X-Ray console](/images/example_servicemap.png?raw=true)



  The AWS X-Ray SDK for Python is compatible with Python 3.7, 3.8, 3.9, 3.10, and 3.11.

  Install the SDK using the following command (the SDK's non-testing dependencies will be installed).

  ```
  pip install aws-xray-sdk
  ```

  To install the SDK's testing dependencies, use the following command.

  ```
  pip install tox
  ```



  Use the following community resources for getting help with the SDK. We use the GitHub
  issues for tracking bugs and feature requests.

  * Ask a question in the [AWS X-Ray Forum](https://forums.aws.amazon.com/forum.jspa?forumID=241&start=0).
  * Open a support ticket with [AWS Support](http://docs.aws.amazon.com/awssupport/latest/user/getting-started.html).
  * If you think you may have found a bug, open an [issue](https://github.com/aws/aws-xray-sdk-python/issues/new).



  If you encounter a bug with the AWS X-Ray SDK for Python, we want to hear about
  it. Before opening a new issue, search the [existing issues](https://github.com/aws/aws-xray-sdk-python/issues)
  to see if others are also experiencing the issue. Include the version of the AWS X-Ray
  SDK for Python, Python language, and botocore/boto3 if applicable. In addition,
  include the repro case when appropriate.

  The GitHub issues are intended for bug reports and feature requests. For help and
  questions about using the AWS SDK for Python, use the resources listed
  in the [Getting Help](https://github.com/aws/aws-xray-sdk-python#getting-help) section. Keeping the list of open issues lean helps us respond in a timely manner.



  The [developer guide](https://docs.aws.amazon.com/xray/latest/devguide) provides in-depth
  guidance about using the AWS X-Ray service.
  The [API Reference](http://docs.aws.amazon.com/xray-sdk-for-python/latest/reference/)
  provides guidance for using the SDK and module-level documentation.





  ```python
  from aws_xray_sdk.core import xray_recorder

  xray_recorder.configure(
      sampling=False,
      context_missing='LOG_ERROR',
      plugins=('EC2Plugin', 'ECSPlugin', 'ElasticBeanstalkPlugin'),
      daemon_address='127.0.0.1:3000',
      dynamic_naming='*mysite.com*'
  )
  ```



  Using context managers for implicit exceptions recording:

  ```python
  from aws_xray_sdk.core import xray_recorder

  with xray_recorder.in_segment('segment_name') as segment:
      
      segment.put_metadata('key', dict, 'namespace')
      with xray_recorder.in_subsegment('subsegment_name') as subsegment:
          subsegment.put_annotation('key', 'value')
          
      with xray_recorder.in_subsegment('subsegment2') as subsegment:
          subsegment.put_annotation('key2', 'value2')
          
  ```

  async versions of context managers:

  ```python
  from aws_xray_sdk.core import xray_recorder

  async with xray_recorder.in_segment_async('segment_name') as segment:
      
      segment.put_metadata('key', dict, 'namespace')
      async with xray_recorder.in_subsegment_async('subsegment_name') as subsegment:
          subsegment.put_annotation('key', 'value')
          
      async with xray_recorder.in_subsegment_async('subsegment2') as subsegment:
          subsegment.put_annotation('key2', 'value2')
          
  ```

  Default begin/end functions:

  ```python
  from aws_xray_sdk.core import xray_recorder


  segment = xray_recorder.begin_segment('segment_name')

  subsegment = xray_recorder.begin_subsegment('subsegment_name')


  segment.put_metadata('key', dict, 'namespace')
  subsegment.put_annotation('key', 'value')
  xray_recorder.end_subsegment()


  xray_recorder.end_segment()
  ```


  To modify the sampling decision at the subsegment level, subsegments that inherit the decision of their direct parent (segment or subsegment) can be created using `xray_recorder.begin_subsegment()` and unsampled subsegments can be created using
  `xray_recorder.begin_subsegment_without_sampling()`.

  The code snippet below demonstrates creating a sampled or unsampled subsegment based on the sampling decision of each SQS message processed by Lambda.

  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.core.models.subsegment import Subsegment
  from aws_xray_sdk.core.utils.sqs_message_helper import SqsMessageHelper

  def lambda_handler(event, context):

      for message in event['Records']:
          if SqsMessageHelper.isSampled(message):
              subsegment = xray_recorder.begin_subsegment('sampled_subsegment')
              print('sampled - processing SQS message')

          else:
              subsegment = xray_recorder.begin_subsegment_without_sampling('unsampled_subsegment')
              print('unsampled - processing SQS message')

      xray_recorder.end_subsegment()
  ```

  The code snippet below demonstrates wrapping a downstream AWS SDK request with an unsampled subsegment.
  ```python
  from aws_xray_sdk.core import xray_recorder, patch_all
  import boto3

  patch_all()

  def lambda_handler(event, context):
      subsegment = xray_recorder.begin_subsegment_without_sampling('unsampled_subsegment')
      client = boto3.client('sqs')
      print(client.list_queues())

      xray_recorder.end_subsegment()
  ```



  As a decorator:

  ```python
  from aws_xray_sdk.core import xray_recorder

  @xray_recorder.capture('subsegment_name')
  def myfunc():
      

  myfunc()
  ```

  or as a context manager:

  ```python
  from aws_xray_sdk.core import xray_recorder

  with xray_recorder.capture('subsegment_name') as subsegment:
      
      subsegment.put_annotation('mykey', val)
      
  ```

  Async capture as decorator:

  ```python
  from aws_xray_sdk.core import xray_recorder

  @xray_recorder.capture_async('subsegment_name')
  async def myfunc():
      

  async def main():
      await myfunc()
  ```

  or as context manager:

  ```python
  from aws_xray_sdk.core import xray_recorder

  async with xray_recorder.capture_async('subsegment_name') as subsegment:
      
      subsegment.put_annotation('mykey', val)
      
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder


  segment1 = xray_recorder.begin_segment('segment_name')


  xray_recorder.put_annotation('key', 'value')


  subsegment1 = xray_recorder.begin_subsegment('subsegment_name')


  xray_recorder.put_metadata('key', 'value')

  if xray_recorder.is_sampled():
      
      val = compute_annotation_val()
      metadata = compute_metadata_body()
      xray_recorder.put_annotation('mykey', val)
      xray_recorder.put_metadata('mykey', metadata)
  ```


  X-Ray Python SDK will by default generate no-op trace and entity id for unsampled requests and secure random trace and entity id for sampled requests. If customer wants to enable generating secure random trace and entity id for all the (sampled/unsampled) requests (this is applicable for trace id injection into logs use case) then they should set the `AWS_XRAY_NOOP_ID` environment variable as False.


  Often times, it may be useful to be able to disable X-Ray for specific use cases, whether to stop X-Ray from sending traces at any moment, or to test code functionality that originally depended on X-Ray instrumented packages to begin segments prior to the code call. For example, if your application relied on an XRayMiddleware to instrument incoming web requests, and you have a method which begins subsegments based on the segment generated by that middleware, it would be useful to be able to disable X-Ray for your unit tests so that `SegmentNotFound` exceptions are not thrown when you need to test your method.

  There are two ways to disable X-Ray, one is through environment variables, and the other is through the SDKConfig module.

  **Disabling through the environment variable:**

  Prior to running your application, make sure to have the environment variable `AWS_XRAY_SDK_ENABLED` set to `false`.

  **Disabling through the SDKConfig module:**
  ```
  from aws_xray_sdk import global_sdk_config

  global_sdk_config.set_sdk_enabled(False)
  ```

  **Important Notes:**
  * Environment Variables always take precedence over the SDKConfig module when disabling/enabling. If your environment variable is set to `false` while your code calls `global_sdk_config.set_sdk_enabled(True)`, X-Ray will still be disabled.

  * If you need to re-enable X-Ray again during runtime and acknowledge disabling/enabling through the SDKConfig module, you may run the following in your application:
  ```
  import os
  from aws_xray_sdk import global_sdk_config

  del os.environ['AWS_XRAY_SDK_ENABLED']
  global_sdk_config.set_sdk_enabled(True)
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder

  def lambda_handler(event, context):
      

      subsegment = xray_recorder.begin_subsegment('subsegment_name')
      
      
      subsegment.put_metadata('key', dict, 'namespace')
      subsegment.put_annotation('key', 'value')

      xray_recorder.end_subsegment()

      
  ```



  ```python
  import concurrent.futures

  import requests

  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.core import patch

  patch(('requests',))

  URLS = ['http://www.amazon.com/',
          'http://aws.amazon.com/',
          'http://example.com/',
          'http://www.bilibili.com/',
          'http://invalid-domain.com/']

  def load_url(url, trace_entity):
      
      xray_recorder.set_trace_entity(trace_entity)
      
      
      resp = requests.get(url)
      
      xray_recorder.clear_trace_entities()
      return resp


  current_entity = xray_recorder.get_trace_entity()
  with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
      
      future_to_url = {executor.submit(load_url, url, current_entity): url for url in URLS}
      for future in concurrent.futures.as_completed(future_to_url):
          url = future_to_url[future]
          try:
              data = future.result()
          except Exception:
              pass
  ```


  By default, if no other value is provided to `.configure()`, SQL trace streaming is enabled
  for all the supported DB engines. Those currently are:
  - Any engine attached to the Django ORM.
  - Any engine attached to SQLAlchemy.

  The behaviour can be toggled by sending the appropriate `stream_sql` value, for example:
  ```python
  from aws_xray_sdk.core import xray_recorder

  xray_recorder.configure(service='fallback_name', stream_sql=True)
  ```



  ```python
  from aws_xray_sdk.core import patch

  libs_to_patch = ('boto3', 'mysql', 'requests')
  patch(libs_to_patch)
  ```



  Full modules in the local codebase can be recursively patched by providing the module references
  to the patch function.
  ```python
  from aws_xray_sdk.core import patch

  libs_to_patch = ('boto3', 'requests', 'local.module.ref', 'other_module')
  patch(libs_to_patch)
  ```
  An `xray_recorder.capture()` decorator will be applied to all functions and class methods in the
  given module and all the modules inside them recursively. Some files/modules can be excluded by
  providing to the `patch` function a regex that matches them.
  ```python
  from aws_xray_sdk.core import patch

  libs_to_patch = ('boto3', 'requests', 'local.module.ref', 'other_module')
  ignore = ('local.module.ref.some_file', 'other_module.some_module\.*')
  patch(libs_to_patch, ignore_module_patterns=ignore)
  ```




  In django settings.py, use the following.

  ```python
  INSTALLED_APPS = [
      
      'aws_xray_sdk.ext.django',
  ]

  MIDDLEWARE = [
      'aws_xray_sdk.ext.django.middleware.XRayMiddleware',
      
  ]
  ```

  You can configure the X-Ray recorder in a Django app under the ‘XRAY_RECORDER’ namespace. For a minimal configuration, the 'AWS_XRAY_TRACING_NAME' is required unless it is specified in an environment variable.
  ```
  XRAY_RECORDER = {
      'AWS_XRAY_TRACING_NAME': 'My application', # Required - the segment name for segments generated from incoming requests
  }
  ```
  For more information about configuring Django with X-Ray read more about it in the [API reference](https://docs.aws.amazon.com/xray-sdk-for-python/latest/reference/frameworks.html)


  If Django's ORM is patched - either using the `AUTO_INSTRUMENT = True` in your settings file
  or explicitly calling `patch_db()` - the SQL query trace streaming can then be enabled or
  disabled updating the `STREAM_SQL` variable in your settings file. It is enabled by default.


  The automatic module patching can also be configured through Django settings.
  ```python
  XRAY_RECORDER = {
      'PATCH_MODULES': [
          'boto3',
          'requests',
          'local.module.ref',
          'other_module',
      ],
      'IGNORE_MODULE_PATTERNS': [
          'local.module.ref.some_file',
          'other_module.some_module\.*',
      ],
      ...
  }
  ```
  If `AUTO_PATCH_PARENT_SEGMENT_NAME` is also specified, then a segment parent will be created
  with the supplied name, wrapping the automatic patching so that it captures any dangling
  subsegments created on the import patching.


  X-Ray can't search on http annotations in subsegments.   To enable searching the middleware adds the http values as annotations
  This allows searching in the X-Ray console like so

  This is configurable in settings with `URLS_AS_ANNOTATION` that has 3 valid values
  `LAMBDA` - the default, which uses URLs as annotations by default if running in a lambda context
  `ALL` - do this for every request (useful if running in a mixed lambda/other deployment)
  `NONE` - don't do this for any (avoiding hitting the 50 annotation limit)

  ```
  annotation.url BEGINSWITH "https://your.url.com/here"
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.flask.middleware import XRayMiddleware

  app = Flask(__name__)

  xray_recorder.configure(service='fallback_name', dynamic_naming='*mysite.com*')
  XRayMiddleware(app, xray_recorder)
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.bottle.middleware import XRayMiddleware

  app = Bottle()

  xray_recorder.configure(service='fallback_name', dynamic_naming='*mysite.com*')
  app.install(XRayMiddleware(xray_recorder))
  ```


  Serverless is an application model that enables you to shift more of your operational responsibilities to AWS. As a result, you can focus only on your applications and services, instead of the infrastructure management tasks such as server provisioning, patching, operating system maintenance, and capacity provisioning. With serverless, you can deploy your web application to [AWS Lambda](https://aws.amazon.com/lambda/) and have customers interact with it through a Lambda-invoking endpoint, such as [Amazon API Gateway](https://aws.amazon.com/api-gateway/).

  X-Ray supports the Serverless model out of the box and requires no extra configuration. The middlewares in Lambda generate `Subsegments` instead of `Segments` when an endpoint is reached. This is because `Segments` cannot be generated inside the Lambda function, but it is generated automatically by the Lambda container. Therefore, when using the middlewares with this model, it is important to make sure that your methods only generate `Subsegments`.

  The following guide shows an example of setting up a Serverless application that utilizes API Gateway and Lambda:

  [Instrumenting Web Frameworks in a Serverless Environment](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python-serverless.html)



  Adding aiohttp middleware. Support aiohttp >= 2.3.

  ```python
  from aiohttp import web

  from aws_xray_sdk.ext.aiohttp.middleware import middleware
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.core.async_context import AsyncContext

  xray_recorder.configure(service='fallback_name', context=AsyncContext())

  app = web.Application(middlewares=[middleware])
  app.router.add_get("/", handler)

  web.run_app(app)
  ```

  Tracing aiohttp client. Support aiohttp >=3.

  ```python
  from aws_xray_sdk.ext.aiohttp.client import aws_xray_trace_config

  async def foo():
      trace_config = aws_xray_trace_config()
      async with ClientSession(loop=loop, trace_configs=[trace_config]) as session:
          async with session.get(url) as resp
              await resp.read()
  ```


  The SQLAlchemy integration requires you to override the Session and Query Classes for SQL Alchemy

  SQLAlchemy integration uses subsegments so you need to have a segment started before you make a query.

  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.sqlalchemy.query import XRaySessionMaker

  xray_recorder.begin_segment('SQLAlchemyTest')

  Session = XRaySessionMaker(bind=engine)
  session = Session()

  xray_recorder.end_segment()
  app = Flask(__name__)

  xray_recorder.configure(service='fallback_name', dynamic_naming='*mysite.com*')
  XRayMiddleware(app, xray_recorder)
  ```



  ```python
  from aws_xray_sdk.core import xray_recorder
  from aws_xray_sdk.ext.flask.middleware import XRayMiddleware
  from aws_xray_sdk.ext.flask_sqlalchemy.query import XRayFlaskSqlAlchemy

  app = Flask(__name__)
  app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"

  XRayMiddleware(app, xray_recorder)
  db = XRayFlaskSqlAlchemy(app)

  ```



  If you want to ignore certain httplib requests you can do so based on the hostname or URL that is being requsted. The hostname is matched using the Python [fnmatch library](https://docs.python.org/3/library/fnmatch.html) which does Unix glob style matching.

  ```python
  from aws_xray_sdk.ext.httplib import add_ignored as xray_add_ignored


  xray_add_ignored(hostname='test.myapp.com')


  xray_add_ignored(hostname='*.myapp.com')


  xray_add_ignored(urls=['/test-path', '/other-test-path'])


  xray_add_ignored(hostname='myapp.com', urls=['/test-url'])
  ```

  If you use a subclass of httplib to make your requests, you can also filter on the class name that initiates the request. This must use the complete package name to do the match.

  ```python
  from aws_xray_sdk.ext.httplib import add_ignored as xray_add_ignored


  xray_add_ignored(subclass='botocore.awsrequest.AWSHTTPConnection')
  ```



  The AWS X-Ray SDK for Python is licensed under the Apache 2.0 License. See LICENSE and NOTICE.txt for more information.


pkgId: 3cd1a027fc243f196cf736e34deecc9d834c27a79003f0e0a376736acaa70d1b
name: python-aws2-wrap
arch: src
version: 1.4.0
epoch: 0
release: 1
summary: A wrapper for executing a command with AWS CLI v2 and SSO
url: https://github.com/linaro-its/aws2-wrap
rpm_license: GPL-3.0-or-later
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws2-wrap-1.4.0-1.src.rpm
checksum_type: sha256
description:
  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=linaro-its_aws2-wrap&metric=alert_status)](https://sonarcloud.io/dashboard?id=linaro-its_aws2-wrap)

  This is a simple script to make it easier to use AWS Single Sign On credentials with tools that don't understand the `sso` entries in an AWS profile.

  The script provides the following capabilities:

  * Run a command using AWS SSO credentials
  * Generate a temporary profile in the $AWS_CONFIG_FILE and $AWS_SHARED_CREDENTIALS_FILE file
  * Exporting the AWS SSO credentials
  * Use the credentials via .aws/config
  * Assume a role via AWS SSO
  * Supports automatic authentication refresh via AWS IAM Identity Center (https://docs.aws.amazon.com/cli/latest/userguide/sso-configure-profile-token.html)

  Please note that the script is called `aws2-wrap` to show that it works with AWS CLI v2, even though the CLI tool is no longer called `aws2`.





  <https://pypi.org/project/aws2-wrap>

  ```
  pip3 install aws2-wrap
  ```



  ```
  brew install aws2-wrap
  ```



  `aws2-wrap [--profile <awsprofilename>] [--exec] <command>`

  Note that if you are using `--exec` and `<command>` contains spaces, it must be surrounded with double-quotation marks.

  You can also specify the profile to be used via AWS_PROFILE which then allows the same profile to be used by subsequent tools and commands.

  Examples:

  `aws2-wrap --profile MySSOProfile terraform plan`

  `aws2-wrap --profile MySSOProfile --exec "terraform plan"`

  `AWS_PROFILE=MySSOProfile aws2-wrap terraform plan`

  If you are having problems with the use of quotes in the command, you may find one of the other methods works better for you.



  There are some utilities which work better with the configuration files rather than the environment variables. For example, if you need to access more than one profile at a time.

  `aws2-wrap --generate --profile $AWS_PROFILE --credentialsfile $AWS_SHARED_CREDENTIALS_FILE --configfile $AWS_CONFIG_FILE --outprofile $DESTINATION_PROFILE`

  Optionally, you can specify `--generatestdout` instead of `--generate`. `--outprofile` is still required in order to name the section but `--credentialsfile` and `--configfile` are ignored. With this command option, the generated credentials will then be output to the console.



  There may be circumstances when it is easier/better to set the appropriate environment variables so that they can be re-used by any `aws` command.

  Since the script cannot directly set the environment variables in the calling shell process, it is necessary to use the following syntax:

  `eval "$(aws2-wrap [--profile <awsprofilename>] --export)"`

  For example:

  `eval "$(aws2-wrap --profile MySSOProfile --export)"`

  If you are using PowerShell, the equivalent command is:

  `aws2-wrap --profile MySSOProfile --export | invoke-expression`



  If you are using a tool that works with normal AWS credentials but doesn't understand the new AWS SSO credentials, another option is to add a profile to `.aws/config` that calls the `aws2-wrap` script.

  For example, add the following block to `.aws/config`:

  ```text
  [profile Wrapped]
  credential_process = aws2-wrap --process --profile <awsprofilename>
  ```

  then, after authentication, you can run any command that uses AWS credentials by specifying the "Wrapped" profile:

  ```text
  aws sso login --profile <awsprofilename>
  export AWS_PROFILE=Wrapped
  export AWS_SDK_LOAD_CONFIG=1
  terraform plan
  ```

  Note that because the profile is being specified via `AWS_PROFILE`, it is sometimes necessary (as shown above) to set `AWS_SDK_LOAD_CONFIG` in order to get tools like `terraform` to successfully retrieve the credentials.



  Your `.aws/config` file can look like this:

  ```text
  [default]
  sso_start_url = xxxxxxxxxxxx
  sso_region = us-west-2
  sso_account_id = xxxxxxxxxxxx
  sso_role_name = SSORoleName

  [profile account1]
  role_arn = arn:aws:iam::xxxxxxxxxxxx:role/role-to-be-assumed
  source_profile = default
  region = ap-northeast-1
  ```

  allowing you to then run:

  `aws2-wrap --profile account1 <command>`

  and `<command>` will be run under `role-to-be-assumed`.



  Contributions are more than welcome, particularly if you are able to expand on the test code. Please ensure, though, that before you submit a Pull Request, you run `make test` to ensure that your changes don't break any of the existing tests and `make pylint` to ensure that the linter is happy. Please note that the CI/CD pylint test *may* use different pylint rules from your own local setup.

  Please also note that `make pylint` will only report errors. You *may* want to explicitly run `python3 -m pylint setup.py aws2wrap`



  Thanks to @matan129, @nitrocode, @chenrui333, @l1n, @sodul, @damian-bisignano, @flyinprogrammer, @abeluck, @topu, @bigwheel, @krabbit, @jscook2345, @hieki, @blazdivjak, @fukushun1994, @johann8384, @ppezoldt, @atwoodjw, @lummish, @life36-vinny, @lukemassa and @axelri for their contributions.


pkgId: 01c84121cef802d8a6e7e27df74b0161f06c38d3ad8f0ed0209a61b1c651acef
name: python-awsSchema
arch: src
version: 0.0.27
epoch: 0
release: 1
summary: dataclasss for parsing aws objects eg api-gateway proxy integration proy
url: https://github.com/thanakijwanavit/awsSchema/tree/master/
rpm_license: Apache Software License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsSchema-0.0.27-1.src.rpm
checksum_type: sha256
description:
  > object based sdk for working with aws services for lambda function integration


  [full docs here](https://thanakijwanavit.github.io/awsSchema/)



  `pip install awsSchema`



  extract data from aws classes eg apigateway lambda input/output
  this library uses jsondataclass, and dataclass



  ```
  from awsSchema.apigateway import Response, Event
  ```



  ```
  dummyEvent =  { "resource": "/{proxy+}", "path": "/hello/world", "httpMethod": "POST", "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "cache-control": "no-cache", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Desktop-Viewer": "true", "CloudFront-Is-Mobile-Viewer": "False", "CloudFront-Is-SmartTV-Viewer": "False", "CloudFront-Is-Tablet-Viewer": "False", "CloudFront-Viewer-Country": "US", "Content-Type": "application/json", "headerName": "headerValue", "Host": "gy415nuibc.execute-api.us-east-1.amazonaws.com", "Postman-Token": "9f583ef0-ed83-4a38-aef3-eb9ce3f7a57f", "User-Agent": "PostmanRuntime/2.4.5", "Via": "1.1 d98420743a69852491bbdea73f7680bd.cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "pn-PWIJc6thYnZm5P0NMgOUglL1DYtl0gdeJky8tqsg8iS_sgsKD1A==", "X-Forwarded-For": "54.240.196.186, 54.182.214.83", "X-Forwarded-Port": "443", "X-Forwarded-Proto": "https" }, "multiValueHeaders":{ 'Accept':[ "*/*" ], 'Accept-Encoding':[ "gzip, deflate" ], 'cache-control':[ "no-cache" ], 'CloudFront-Forwarded-Proto':[ "https" ], 'CloudFront-Is-Desktop-Viewer':[ "true" ], 'CloudFront-Is-Mobile-Viewer':[ "False" ], 'CloudFront-Is-SmartTV-Viewer':[ "False" ], 'CloudFront-Is-Tablet-Viewer':[ "False" ], 'CloudFront-Viewer-Country':[ "US" ], '':[ "" ], 'Content-Type':[ "application/json" ], 'headerName':[ "headerValue" ], 'Host':[ "gy415nuibc.execute-api.us-east-1.amazonaws.com" ], 'Postman-Token':[ "9f583ef0-ed83-4a38-aef3-eb9ce3f7a57f" ], 'User-Agent':[ "PostmanRuntime/2.4.5" ], 'Via':[ "1.1 d98420743a69852491bbdea73f7680bd.cloudfront.net (CloudFront)" ], 'X-Amz-Cf-Id':[ "pn-PWIJc6thYnZm5P0NMgOUglL1DYtl0gdeJky8tqsg8iS_sgsKD1A==" ], 'X-Forwarded-For':[ "54.240.196.186, 54.182.214.83" ], 'X-Forwarded-Port':[ "443" ], 'X-Forwarded-Proto':[ "https" ] }, "queryStringParameters": { "name": "me", "multivalueName": "me" }, "multiValueQueryStringParameters":{ "name":[ "me" ], "multivalueName":[ "you", "me" ] }, "pathParameters": { "proxy": "hello/world" }, "stageVariables": { "stageVariableName": "stageVariableValue" }, "requestContext": { "accountId": "12345678912", "resourceId": "roq9wj", "stage": "testStage", "requestId": "deef4878-7910-11e6-8f14-25afc3e9ae33", "identity": { "cognitoIdentityPoolId": None, "accountId": None, "cognitoIdentityId": None, "caller": None, "apiKey": None, "sourceIp": "192.168.196.186", "cognitoAuthenticationType": None, "cognitoAuthenticationProvider": None, "userArn": None, "userAgent": "PostmanRuntime/2.4.5", "user": None }, "resourcePath": "/{proxy+}", "httpMethod": "POST", "apiId": "gy415nuibc" }, "body": "{\r\n\t\"a\": 1\r\n}", "isBase64Encoded": False }
  event = Event.from_dict(dummyEvent)
  type(event)
  ```




      awsSchema.apigateway.Event





  ```
  Event.parseBody(dummyEvent)
  ```




      {'a': 1}





  ```
  print(Response.returnSuccess(body={'hello':'world'}))
  print(Response.returnError(message='error'))
  ```

      {'body': '{"hello":"world"}', 'statusCode': 200, 'headers': {}}
      {'body': '{"error":"error"}', 'statusCode': 400, 'headers': {}}




  ```
  def lambda_handler(event, *args):
    
    body = Event.parseBody(event)


    
    return Response.returnSuccess(body = {'success':'true'})

  lambda_handler(dummyEvent)
  ```




      {'body': '{"success":"true"}', 'statusCode': 200, 'headers': {}}





  ```

  inputBody = {'test':'123'}

  inputToFunction = Event.getInput(body = inputBody) ; print(f'inputToFunction is {inputToFunction}')
  response = lambda_handler(inputToFunction); print(f'rawResponse is {response}')
  parsedResponse = Response.parseBody(response); print(f'parsedResponse is {parsedResponse}')
  ```

      inputToFunction is {'body': '{"test":"123"}', 'headers': {}, 'statusCode': 200}
      rawResponse is {'body': '{"success":"true"}', 'statusCode': 200, 'headers': {}}
      parsedResponse is {'success': 'true'}




  ```
  from awsSchema.S3 import S3Event
  ```

  ```

  eventSample = { "Records": [ { "eventVersion": "2.1", "eventSource": "aws:s3", "awsRegion": "us-east-2", "eventTime": "2019-09-03T19:37:27.192Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "AWS:AIDAINPONIXQXHT3IKHL2" }, "requestParameters": { "sourceIPAddress": "205.255.255.255" }, "responseElements": { "x-amz-request-id": "D82B88E5F771F645", "x-amz-id-2": "vlR7PnpV2Ce81l0PRw6jlUpck7Jo5ZsQjryTjKlc5aLWGVHPZLj5NeC6qMa0emYBDXOo6QBU0Wo=" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "828aa6fc-f7b5-4305-8584-487c791949c1", "bucket": { "name": "bucketname", "ownerIdentity": { "principalId": "A3I5XTEXAMAI3E" }, "arn": "arn:aws:s3:::lambda-artifacts-eafc19498e3f2df" }, "object": { "key": "theKey", "size": 1305107, "eTag": "b21b84d653bb07b05b1e6b33684dc11b", "sequencer": "0C0F6F405D6ED209E1" } } } ] }
  bucket, key = S3Event.getKeyObject(eventSample)
  print(bucket,key)
  ```

      bucketname theKey




  ```
  from dataclasses import field
  from dataclasses import dataclass, field
  from dataclasses_json import dataclass_json, Undefined
  @dataclass_json
  @dataclass
  class Product:
    cprcode: str
    iprcode: str
    oprcode: str
    ordertype: str
    pr_abb: str

  productDict = Product(
    cprcode='123',
    iprcode='123',
    oprcode= '12343',
    ordertype='3225',
    pr_abb='4563'
  ).to_dict()
  productDict
  ```




      {'cprcode': '123',
       'iprcode': '123',
       'oprcode': '12343',
       'ordertype': '3225',
       'pr_abb': '4563'}



  ```
  event = Event.getInput(productDict)
  Event.parseDataClass(Product, event)
  ```




      Product(cprcode='123', iprcode='123', oprcode='12343', ordertype='3225', pr_abb='4563')


pkgId: 9bff322395f7c21d83cf551866d2cac3386e4c6878507646aa81bbf40c86ebe3
name: python-aws_lambda_stream
arch: src
version: 1.3.1
epoch: 0
release: 1
summary: Create stream processors with AWS Lambda functions
url: https://github.com/clandro89/aws-lambda-stream
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-aws_lambda_stream-1.3.1-1.src.rpm
checksum_type: sha256
description:
  This a python version of [aws-lambda-stream](https://github.com/jgilbert01/aws-lambda-stream) using [ReactiveX](https://github.com/ReactiveX/RxPY)



  With `pip` installed, run:

  ````
  pip install aws-lambda-stream
  ````

  With `poetry`, run:
  ````
  poetry add aws-lambda-stream
  ````


  The following project templates are provided to help get your event platform up and running:

  * event hub
  * event-lake-s3
  * event-fault-monitor
  * rest-bff-service
  * control-service


  Create your own project using the Serverless Framework, such as: `sls create --template-url https://github.com/clandro89/aws-lambda-stream/tree/master/templates/event-hub --path myprefix-event-hub`



  - [aws-lambda-stream](https://github.com/jgilbert01/aws-lambda-stream)


  This library is licensed under the MIT License. See the LICENSE file.


pkgId: 1139c1c7869c167bbb8db65b8c143a9cc4119dfc51aa7a6ca30fcf511abb4e2a
name: python-awsaccountmgr
arch: src
version: 0.0.16
epoch: 0
release: 1
url: https://github.com/thiezn/awsaccountmgr/
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsaccountmgr-0.0.16-1.src.rpm
checksum_type: sha256
summary:
  A command line tool for managing accounts within an AWS organization. Easy to integrate into AWS Deployment Framework

description:
  ***!IMPORTANT!*** - The code has not been tested properly yet in production and no unit/integration testing have been implemented. Use at your own risk.

  This repository contains code that manages the process around AWS account creation. It assumes you are working with the [AWS Deployment Framework](https://github.com/awslabs/aws-deployment-framework) for managing deployments in a multi-account AWS organization.

  *Current Features*

  - Create new AWS accounts within existing AWS Organization
  - Move accounts to the organizational unit defined in config files
  - Optionally remove default VPC resources on accounts
  - Create and update account aliasses
  - Account tagging
  - Optional protection from moving accounts directly between organizational units (Related to AWS Deployment Framework)
  - Create and update account alternate contacts

  *Not supported due to AWS Organization API limitations*

  - Updating account names
  - Updating account email addresses
  - Removing accounts
  - Handling root account credentials and MFA



  Note we are only supporting python3.6 and up, I really like my f-strings..

  Install the package using pip

  ```bash
  pip3 install awsaccountmgr
  ```

  Next define configuration files for the accounts you would like to manage. You can have multiple configuration files for logical separation. The script will iterate and validate each file before sequentially creating/updating the defined accounts.

  Here is an example file

  ```yaml
  Accounts:
    
    - AccountFullName: playgroundaccount
      OrganizationalUnitPath: playground/
      Email: playgroundaccount@moorspots.com

    
    - AccountFullName: usdevaccount
      OrganizationalUnitPath: us/dev
      Email: usdevaccount@moorspots.com
      DeleteDefaultVPC: True

    
    - AccountFullName: myrootaccount
      OrganizationalUnitPath: /
      Email: myrootaccount@moorspots.com
      DeleteDefaultVPC: True
      AllowDirectMoveBetweenOU: True
      Alias: IDontWantMyAliasToBeTheSameAsTheAccountFullName
      AllowBilling: False
      AlternateContacts:
        Operations:
          Email: myops@moorspots.com
          Name: myname
          Title: Doctor
          PhoneNumber: +31307161111

        Security:
          Email: mysecurity@moorspots.com
          Name: myname
          Title: Doctor
          PhoneNumber: +31307161111

        Billing:
          Email: mybilling@moorspots.com
          Name: myname
          Title: Doctor
          PhoneNumber: +31307161111

      Tags:
        - CostCenter: 123456789
  ```

  To create new accounts or move accounts to a different OU you only have to update the relevant account configuration file and re-run the script.

  The OU name is the name of the direct parent of the account. If you want to move an account to the root you can provide the AWS organization id (eg "r-abc1"). If you are dealing with nested organizational units you can seperate them with a / (see examples above).

  If you provide the 'AlternateContacts' key, all three alternate contact types will be fully updated with the declared configuration. If you for instance only provide an Operations contact entry, it will try to remove the Security and Billing contact information.



  Once the configuration files are defined you can start the script locally with:

  ```bash
  awsaccountmgr <root_ou_id> <config folder path>
  ```

  You will have to have AWS credentials stored (using AWS CLI or environment variables) on your machine. If the assumed role is not resided in the master account the script will try to assume the OrganizationAccountAccessRole role in the master account. This is useful for people using the AWS Deployment Framework to run this script from a pipeline in the deployment account.

  To see all available command line options, run  ```awsaccountmgr --help```



  - Create cc-buildonly ADF pipeline
  - add buildspec.yml similar to example-buildspec.yml
  - Update the ADF global.yml files to ensure the deployment account is able to do organizations related stuff in the master account
  - TIP: If you add a schedule to the ADF pipeline you can reasonably ensure the accounts are configured as defined in the yaml files.
  - TIP2: perhaps this module can be used in combination with a lambda triggered by cloudwatch events related to relevant organizations actions. This will immediately correct any changes someone does to accounts to whats being defined in the configuration files.






  - FIX: Use standalone context for updating master account



  - FIX: Avoid raising an error when trying to remove an alternate contact thats non existing



  - FIX: The API has a more strict formatting for the phone field. Default to "00000000" when phone field is not provided



  - FIX: / is an invalid character for Alternate contact fields. Defaulting to NotApplicable and not@applicable.com



  - FIX: all alternate contact fields are mandatory. Defaulting to N/A when not provided



  - Added capability to update AWS account alternate contacts
  - FIX: configuration example showed Tags as dict items, corrected to list of dicts



  - FIX: Retrying subnet and IGW describe calls. Sometimes they are not yet available after a new account creation.



  - FIX: AllowDirectMoveBetweenOU parameter now works as intended



  - FIX: Using pagination when listing Org Units



  - setup.py now includes dependency libraries
  - FIX: describe_vpcs call sometimes failed on creating new account



  - Configuration files now support '/' to target root



  - FIX: Removing VPCs through threads working properly



  - Retrieving master_account_id from API
  - Deleting VPCs now using threads



  - Removing default VPCs in all regions



  - config_directory is now a mandatory parameter



  Thanks to @deltagarrett for testing!

  - Initial version


pkgId: 55d946c9ffdb2c9eaf58444ccc7244f546edd0d31a57903c574491f82d65a64a
name: python-awsapilib
arch: src
version: 3.1.5
epoch: 0
release: 1
url: https://github.com/schubergphilis/awsapilib
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsapilib-3.1.5-1.src.rpm
checksum_type: sha256
summary:
  A python library that exposes AWS services that are not covered by boto3, through the usage of undocumented APIs.


pkgId: 5ff77bda70d91300019724dbd4bfa3086ce7bdaadd49d431d647fe27e141e6bb
name: python-awsc
arch: src
version: 0.3.1
epoch: 0
release: 1
summary: AWS Commander
url: https://github.com/baliame/awsc
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsc-0.3.1-1.src.rpm
checksum_type: sha256
description:
  AWSC is a tool inspired by [k9s](https://github.com/derailed/k9s) - the goal is to create a similarly easy to use terminal-based UI for the AWS API.





  AWSC has been tested with and therefore requires python 3.8 or later.



  AWSC is available on pypi and can be installed via pip.

  ```bash
  $ pip3 install awsc
  ````



  You can install the latest git revision from the root directory of the repository by issuing:

  ```bash
  $ sudo python3 setup.py install
  ```



  Through either installation method, the `awsc` binary should become available.

  Upon launching AWSC, you are prompted to set an encryption key (password) for your database of access credentials. You will have to enter this encryption key every time you launch AWSC.

  You will then be taken to the list of AWS contexts and you should see an empty list. You can either add a new context by pressing a - you'll have to add your access and secret key manually; or you can import the current AWS CLI context by pressing i.

  For navigation , refer to the top right hotkey display on each screen.



  The command palette can be accessed by pressing :. This allows you to navigate between the different AWS resources. Most resources have short names that are accepted, but the full name of the resource without spaces should also be accepted. For an exhaustive list of commands that are available, type 'help' and press enter.



  You can configure a default context, region and ssh key in their relevant screens. These are remembered and automatically set on each launch. Your default SSH key is only used if the keypair for the instance you are accessing does not already have an associated SSH key.



  Refer to the [changelog](CHANGELOG.md) for release notes on versions.


pkgId: bc5017d1a7de7fdcd1659c54f779195f53e150293abf4619291f685d1a69faa4
name: python-awscli
arch: src
version: 1.34.16
epoch: 0
release: 1
summary: Universal Command Line Environment for AWS.
url: http://aws.amazon.com/cli/
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awscli-1.34.16-1.src.rpm
checksum_type: sha256
description:
  This package provides a unified command line interface to Amazon Web
  Services.
  Jump to:
  -  `Getting Started <#getting-started>`__
  -  `Getting Help <#getting-help>`__
  -  `More Resources <#more-resources>`__


pkgId: d380f29b7904e040a223fa86c85e641df47aa26aebd05264a8546e21fbebef9a
name: python-awscli-local
arch: src
version: 0.22.0
epoch: 0
release: 1
summary: Thin wrapper around the "aws" command line interface for use with LocalStack
url: https://github.com/localstack/awscli-local
rpm_license: Apache License 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awscli-local-0.22.0-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version][pypi-version]][pypi]

  This package provides the `awslocal` command, which is a thin wrapper around the `aws`
  command line interface for use with [LocalStack](https://github.com/localstack/localstack).



  You can install the `awslocal` command via `pip`:

  ```console
  pip install awscli-local[ver1]
  ```

  Note that the command above also installs the latest version of the underlying AWS CLI version 1 (`awscli`) package. Use this command if you prefer to manage your own version of `awscli` (e.g., `v1`/`v2`) and install the wrapper script only:
  ```console
  pip install awscli-local
  ```

  **Note:** Automatic installation of AWS CLI version 2 is currently not supported yet (at the time of writing there is no official pypi package for `v2` available), but the `awslocal` technically also works with AWS CLI v2 (see [this section](#Limitations) for more details).



  The `awslocal` command has the same usage as the `aws` command. For detailed usage, please refer to the manual pages of `aws help`.



  Instead of the following command ...

  ```console
  aws --endpoint-url=http://localhost:4566 kinesis list-streams
  ```

  ... you can simply use this:

  ```console
  awslocal kinesis list-streams
  ```



  You can use the following environment variables for configuration:

  * `AWS_ENDPOINT_URL`: The endpoint URL to connect to (takes precedence over `USE_SSL`/`LOCALSTACK_HOST` below).
    Useful when you have LocalStack bound to a different host (e.g., within docker-compose).
  * `LOCALSTACK_HOST` (deprecated): A <hostname>:<port> variable defining where to find LocalStack (default: localhost:4566).
  * `USE_SSL` (deprecated): Whether to use SSL when connecting to LocalStack (default: False).



  `awscli` provides a neat command completion feature which is compatible with most modern shells which can also be used with `awslocal`.



  The command completion will automatically suggest commands and parameters when using the completion key (which is typically the _Tab_ key):

  ```sh
  $ awslocal dynamodb d<TAB>
  delete-backup                        describe-global-table
  delete-item                          describe-global-table-settings
  delete-table                         describe-limits
  describe-backup                      describe-table
  describe-continuous-backups          describe-table-replica-auto-scaling
  describe-contributor-insights        describe-time-to-live
  describe-endpoints
  ```



  - Follow the official guide on setting up the command completion for the `aws` CLI: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-completion.html
  - While enabling the command completion for your shell, **make sure to register the completion for `awslocal` as well**.

    For example, if you are using `bash`, you would add the following commands to your `~/.bashrc`:
    ```sh
    complete -C '/usr/local/bin/aws_completer' aws
    complete -C '/usr/local/bin/aws_completer' awslocal
    ```
  - Follow the instructions for the shell you are using. For some shells you might need to register a different command or enable certain compatibility plugins (like `zsh`).



  * Please note that there is a known limitation for using the `cloudformation package ...` command with the AWS CLI v2. Currently it is not possible to specify the S3 endpoint URL, and this issue is [not yet resolved](https://github.com/aws/aws-cli/pull/3309) on AWS side. The problem is that the AWS CLI v2 is [not available as a package on pypi.org](https://github.com/aws/aws-cli/issues/4947), but is instead shipped as a binary package that cannot be easily patched from `awslocal`. To work around this issue, you have 2 options:

     - Downgrade to the v1 AWS CLI (this is the recommended approach)
     - There is an inofficial way to install AWS CLI v2 from sources. We do not recommend this, but it is technically possible. Also, you should install these libraries in a Python virtualenv, to avoid version clashes with other libraries on your system:
  ```sh
  virtualenv .venv
  . .venv/bin/activate
  pip install https://github.com/boto/botocore/archive/v2.zip https://github.com/aws/aws-cli/archive/v2.zip
  ```



  * v0.22.0: Use fallback for endpoint detection. Should prevent most cases of `Unable to find LocalStack endpoint for service ...`
  * v0.21.1: Introducing semantic versioning and list of services without endpoints
  * v0.21: Use placeholder credentials and region only if Boto cannot not find them, fix output streaming for logs tail call
  * v0.20: Small fixes for Python 2.x backward compatibility
  * v0.19: Patch botocore to skip adding `data-` host prefixes to endpoint URLs
  * v0.18: Pass `SYSTEMROOT` env variable to fix "_Py_HashRandomization_Init" error on Windows
  * v0.17: Remove obsolete/erroneous FORCE_V2 flag
  * v0.16: Minor fix reading addressing_style in profile config
  * v0.15: Fix lookup of v1/v2 AWS CLI version, apply --s3-endpoint-url only for v1
  * v0.14: Quote file name for windows to allow folder names with spaces
  * v0.13: Fix extra requires for newer pip versions
  * v0.12: Support v1 and v2 of underlying `awscli` installation
  * v0.9: Add `--s3-endpoint-url` by default to fix "cloudformation package" command
  * v0.9: Support for `DEFAULT_REGION` environment variable
  * v0.8: Switch to using edge port for all service endpoints by default
  * v0.7: Apply runtime patch to aws-cli to enable `--s3-endpoint-url` CloudFormation parameter
  * v0.6: Start `aws` CLI command in-memory instead of calling external process
  * v0.5: Support piping binary files to stdout; add .bat file for Windows
  * v0.4: Minor fix for Python 3 compatibility
  * v0.3: Add support for additional service endpoints
  * v0.2: Enable SSL connections; refactor code
  * v0.1: Initial release



  This package can be replaced by a single bash alias, except for `cloudformation package ...` as this command requires an additional `--s3-endpoint-url` parameter:
  ```console
  alias awslocal="AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test AWS_DEFAULT_REGION=${DEFAULT_REGION:-$AWS_DEFAULT_REGION} aws --endpoint-url=http://${LOCALSTACK_HOST:-localhost}:4566"
  ```



  This software library is released under the Apache License, Version 2.0 (see `LICENSE`).

  [pypi-version]: https://img.shields.io/pypi/v/awscli-local.svg
  [pypi]: https://pypi.org/project/awscli-local/


pkgId: 7cf246307307dc93dcf412d515ff72382a438ded8d9b26ba45c0241ea341a841
name: python-awscliv2
arch: src
version: 2.3.1
epoch: 0
release: 1
summary: Wrapper for AWS CLI v2
url: https://youtype.github.io/awscliv2/
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awscliv2-2.3.1-1.src.rpm
checksum_type: sha256
description:
  [![PyPI - awscliv2](https://img.shields.io/pypi/v/awscliv2.svg?color=blue&label=awscliv2)](https://pypi.org/project/awscliv2)
  [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/awscliv2.svg?color=blue)](https://pypi.org/project/awscliv2)
  [![PyPI - Downloads](https://static.pepy.tech/badge/awscliv2)](https://pepy.tech/project/awscliv2)

  Wrapper for [AWS CLI v2](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html).

  - [AWS CLI v2 for Python](#aws-cli-v2-for-python)
    - [Features](#features)
    - [Before you start](#before-you-start)
    - [Installation](#installation)
    - [Usage](#usage)
      - [From command line](#from-command-line)
      - [Docker fallback](#docker-fallback)
      - [Extra commands](#extra-commands)
      - [As a Python module](#as-a-python-module)
    - [Development](#development)
    - [How to help](#how-to-help)
    - [Versioning](#versioning)
    - [Latest changes](#latest-changes)



  - No dependency hell, like with original [awscli](https://pypi.org/project/awscli/)
  - Can install and update `awscliv2` binaries
  - Provides access to all AWS services
  - Has Python interface `awscliv2.api.AWSAPI`



  - This is not an official AWS CLI v2 application, [rant there](https://github.com/aws/aws-cli/issues/4947)
  - Check the source code of this app, as you are working with sensitive data
  - By default this app uses [amazon/aws-cli](https://hub.docker.com/r/amazon/aws-cli) Docker image
  - To use [binaries for your OS](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html), run `awsv2 --install`
  - Cross-check the source code again, probably I want to
    [steal your credentials](https://blog.sonatype.com/python-packages-upload-your-aws-keys-env-vars-secrets-to-web)!



  ```bash
  python -m pip install awscliv2
  ```

  You can add an alias to your `~/.bashrc` or `~/.zshrc` to use it as a regular `AWS CLI v2`

  ```bash
  alias aws='awsv2'
  ```





  Install `AWS CLI v2`:

  ```bash

  awsv2 --install
  ```

  Configure default profile if needed:

  ```bash
  AWS_ACCESS_KEY_ID='my-access-key'
  AWS_SECRET_ACCESS_KEY='my-secret-key'


  awsv2 --configure default ${AWS_ACCESS_KEY_ID} ${AWS_SECRET_ACCESS_KEY}
  awsv2 configure set region us-west-1
  ```

  Use `AWS CLI` as usual:

  ```bash


  awsv2 s3 ls


  python -m awscliv2 s3 ls
  ```

  Also, you can check [scripts/example.sh](https://github.com/youtype/awscliv2/blob/main/scripts/example.sh)



  Unless you run `awsv2 --install` once, application will use [amazon/aws-cli](https://hub.docker.com/r/amazon/aws-cli) Docker image. The image is not ideal, and it uses `root` user, so fix downloaded file permissions manually. Or just run `awsv2 --install`

  Update it with `docker pull amazon/aws-cli`.

  Container uses two volumes:

  - `$HOME/.aws` -> `/root/.aws` - credentials and config store
  - `$(cwd)` -> `/aws` - Docker image workdir



  `awscliv2` contains a few commands to make your life easier, especially in CI or any non-TTY environment.

  - `awsv2 -U/--update/--install` - Install `AWS CLI v2`
  - `awsv2 --configure <profile_name> <aws_access_key_id> <aws_secret_access_key> [<aws_session_token>] [<region>]` - set profile in `~/.aws/credentials`
  - `awsv2 --assume-role <profile_name> <source_profile> <role_arn>` - create a new profile with assume role credentials
  - `awsv2 -V/--version` - Output `awscliv2` and `AWS CLI v2` versions



  Basic usage

  ```python
  from awscliv2.api import AWSAPI
  from awscliv2.exceptions import AWSCLIError

  aws_api = AWSAPI()

  try:
      output = aws_api.execute(["s3", "ls"])
  except AWSCLIError as e:
      print(f"Something went wrong: {e}")
  else:
      print(output)
  ```

  Install binaries for your OS from Python

  ```python
  from awscliv2.installers import install_multiplatform

  install_multiplatform()
  ```

  You can also set credentials or assume roles

  ```python
  from awscliv2.api import AWSAPI

  aws_api = AWSAPI()

  aws_api.set_credentials(
      profile_name="my_profile",
      aws_access_key_id="access_key",
      aws_secret_access_key="secret_key",
      region="us-east-1",
  )
  aws_api.assume_role(
      profile_name="my_profile",
      source_profile="source_profile",
      role_arn="role_arn",
  )
  ```



  - Install [poetry](https://python-poetry.org/)
  - Run `poetry install`
  - Use `black` formatter in your IDE



  - Ping AWS team to release an official PyPI package
  - Share your experience in issues



  `awscliv2` version follows [PEP 440](https://www.python.org/dev/peps/pep-0440/).



  Full changelog can be found in [Releases](https://github.com/youtype/awscliv2/releases).


pkgId: d61868650381779e7d9b743fb622b66c08cdbae2c062fab46104e5b9d24db15a
name: python-awscon
arch: src
version: 0.0.13
epoch: 0
release: 1
url: https://www.github.com/sergiopena/awscon
rpm_license: BSD
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awscon-0.0.13-1.src.rpm
checksum_type: sha256
summary:
  Wrapper that displays all available EC2 instances and launchs an SSM console session for the selected one

description:
  Connect to SSM console of any deployed instance.

  <img src="demo.gif" witdh="700">


  Setup your profiles using the aws cli

  ```sh
  aws configure --profile PROFILE_NAME
  ```

  You can also leave out the `--profile PROFILE_NAME` param to set your `default` credentials

  Refer to this doc for more information
  https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

  This code now has an external dependency on fzf please install it using your preferred package manager.




  ```
  pip install awscon
  ```

   ```
   git clone git@github.com:sergiopena/awscon.git
   cd awscon
   python setup.py install
   ```


  No test at the moment... SHAME!


  * An exported env var named AWS_PROFILE is required, as this is the profile that will be used to retrieve running ec2 instances
  * Profile must include the region, currently we only support one region.
  * Run `awscon` it will retrieve your EC2 running instances and display a menu to connect to them.


  Contributions are more than welcomed!


  ```
  python setup.py sdist bdist_wheel
  twine upload --repository-url https://test.pypi.org/legacy/ dist/*
  twine upload dist/*
  ```


  Inspired by the AWS profile switcher [awsp](https://github.com/johnnyopao/awsp)

  BSD


pkgId: 46e08d3cc6d4a00be418cce16cf7d7ba3a8638042c5934a563c900fd98af2239
name: python-awscreds
arch: src
version: 0.1.0
epoch: 0
release: 1
summary: awscreds stores AWS credentials in OS's secure storage
url: https://github.com/DmitriyLyalyuev/awscreds
rpm_license: MIT
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awscreds-0.1.0-1.src.rpm
checksum_type: sha256
description:
  The easiest way to install `awscreds` is to use pip3:

      $ pip3 install awscreds

  or from sources:

      $ git clone https://github.com/DmitriyLyalyuev/awscreds.git
      $ cd awscreds
      $ python3 setup.py install



  `awscreds -h`



  `awscreds add`

  `awscreds add -e prj_name`



  `awscreds delete`

  `awscreds delete -e prj_name`



  `awscreds get -e prj_name`



  ```
  eval `awscreds export -e prj_name`
  ```


pkgId: bd9fc2b6731fbc702ff9173029c5706ebb9dbbe286274b92bd111142d4cf1c8d
name: python-awsdeployer
arch: src
version: 1.15.1
epoch: 0
release: 1
summary: Collection of some scripts to automate AWS Lambda and API Gateway deployments
url: https://github.com/sgtpepperpt/awsdeployer
rpm_license: GNU General Public License v3 (GPLv3)
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsdeployer-1.15.1-1.src.rpm
checksum_type: sha256
description:
  Easily deploy Lambda functions and their layers.

  These scripts assume a working directory like that of sample_lambda:
  * `awsdeployer.ini` file with your secrets (see sample file)
  * `awsdeployer_lambda.json` with your layer and function configurations
  * `function_name.py` files, one for each of your Lambda functions
  The executable is `lambda`, which accepts the following commands:
  * `$ lambda layer <layer-name>`: deploy layer "layer-name" into AWS (requires docker to build)
  * `$ lambda config [<function-name>]`: update all function configs in AWS (specify a function name to only update that function's configs); non-existing functions are created (default Lambda IAM permissions)
  * `$ lambda <function-name>`: if no option above is matched, the specified function has its code and configs updated **(probably the most common case)**; non-existing functions are created (default Lambda IAM permissions)
  Tip: all <function-name> parameters can be replaced by a __shorthand__, which you can specify in your `awsdeployer_lambda.json`.

  * `main_file`: specify the main function file (if not present, function_name.py is assumed)
  * `additional_files`: additional files to include with the main function file in the deployment

  If you need to add the same set of variables to multiple functions (eg. database configurations) you can define a global pack of environment variables that you can then reference in each function that needs it. Example in samples/lambda/awsdeployer_lambda.json

  If you need to build a specific package for your layer (eg. psycopg2) you can use pre and post build hooks for the layer build, and add docker arguments to the command.
  To build psycopg2 compile it separately, then use these configs:
  ```
  "layer_configs": {
      "psycopg2layer": {
          "requirements_file": "requirements.txt",
          "requirements_ignore": ["psycopg2"],
          "build_args": "-v ~/psycopg2-build:/bar",
          "pre_build_command": "echo 'Something before pip'",
          "post_build_command": "cp -r /bar /foo/python/psycopg2",
          "common": true
      }
  }


pkgId: bc525a5f3c6ab4067c789aaaac2f19e7053af73e35534aaae5fd2aac5a913e71
name: python-awsecsconnect
arch: src
version: 0.0.6
epoch: 0
release: 1
summary: Utility for more easily starting a shell on an AWS ECS Container
url: https://pypi.org/project/awsecsconnect/
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsecsconnect-0.0.6-1.src.rpm
checksum_type: sha256
description:
  https://www.notion.so/Start-a-shell-on-any-backend-container-121a349afecb803ebc33ed4d81abd953?pvs=4

  Tired of typing a series of `aws` cli commands to get the arns and container name I need, when trying
  to just open up a shell in that container.

  Usage: `awsecsconnect`

  Dependencies: This assumes that you have AWS Profile environment variables set up already, and that you can
  execute the aws cli using `aws`.


  - This uses boto3 to get most of the details, but ultimately still depends on having the AWS CLI installed,
    because the execution of an interactive shell is a whole client unto itself.
  - This package is published publicly to PYPI so that it can be conveniently installed with pip. Ultimately,
    this is not an open source project and not publicly maintained or documented (yet?).  I've registered
    this in pypi under my personal account just to keep SV1 names out of the picture. You don't REALLY need
    pypi to use this - you can just run it directly from the source - but a global package is very convenient.


  The latest tested build is available via pip:  `pip install --upgrade awsecsconnect`.


  `python -m build` will create builds in ./dist/


  Using twine with an api key, publish a new specific to pypi:
  `twine upload --repository pypi dist/awsecsconnect-0.0.4*`

  The build number is in the project file, and needs to be updated to create a valid downloadable pypi build.


pkgId: 0efe00d78169f1d406948ee658234366f97be7b2e3b0096d4e04988c32051d7e
name: python-awsfile-helper
arch: src
version: 0.1.18
epoch: 0
release: 1
summary: AWS File Helper for Easier I/O
url: https://github.com/craigtrim/awsfile-helper
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsfile-helper-0.1.18-1.src.rpm
checksum_type: sha256
description:
  Content Management and Retrieval for Cloud and Local Storage


  You must have an AWS Access Key and Secret Access key to connect to AWS.

  Upon obtaining these keys, use
  ```python
  from baseblock import CryptoBase

  os.environ['AWS_ACCESS_KEY'] = CryptoBase().encrypt_str('<my-access-key>')
  os.environ['AWS_SECRET_KEY'] = CryptoBase().encrypt_str('<my-secret-key>')
  ```

  This will place your encrypted credentials into the environment.

  The `AwsAPI` class will retrieve and decrypt these credentials to login.


  The following code will retrieve any file:
  ```python
  from awsfile_helper import FindOwlFile

  d_cloud_file = FindS3File(
      file_name='config/graphviz/stylesheets/nlu',
      file_ext='yaml', file_version='0.1.0').process()
  ```
  The bucket is assumed to be `data-core-bast`.

  We can modify this assumption down the road if we create new buckets for different clients, etc.

  A file may also be retrieved without a version, like this:
  ```python
  d_cloud_file = FindS3File(
      file_name='config/graphviz/stylesheets/nlu',
      file_ext='yaml').process()
  ```

  In that case, the system will first look in the environment, using a key configuration that relies on the `file_name` like this: `CONFIG_GRAPHVIZ_STYLESHEETS_NLU_VERSION`.  If no value is found in the environment, the system will consider this a _wildcard_ match and set the version to `*`.  This forces the system to list the contents of the qualified path and choose the latest version.  This operation takes an additional 2-3 milliseconds, assuming the network is running smoothly.



  Ontologies require a special finder class, because we typically have two files we want to retrieve - an OWL model and a TXT file with synonyms.

  Therefore, assume that an S3 bucket exists with two files we want to retrieve: `syllabus.owl` and `syllabus.txt`.

  The following code will retrieve these files:
  ```python
  from awsfile_helper import FindOwlFile

  d_cloud_file = FindOwlFile(file_name='syllabus', version='0.1.0').process()
  ```

  Note that we did not specify the file extension within the `file_name` variable.

  It is permissible to specify explicit file names such as `syllabus.txt` or partial file names such.

  The result dictionary is keyed by file name and (with redacted contents) looks like this:
  ```json
  {
      "owl": {
          "path": "<local path to OWL file">,
          "version": "<version of OWL file>",
          "contents": "<contents of OWL file>"
      },
      "txt": {
          "path": "<local path to txt file">,
          "version": "<version of txt file>",
          "contents": "<contents of txt file>"
      }
  }
  ```


pkgId: 1d2bfc2d4e34c8da9cd8a087406429f824990253f459ecce65822db0eb3350b6
name: python-awsglue-dev
arch: src
version: 2021.12.30
epoch: 0
release: 1
summary: Python interfaces to the AWS Glue ETL library for use as a local dependency.
url: https://pypi.org/project/awsglue-dev/
rpm_license: UNKNOWN
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsglue-dev-2021.12.30-1.src.rpm
checksum_type: sha256
description:
  This repository contains libraries used in the [AWS Glue](https://aws.amazon.com/glue) service. These libraries extend [Apache Spark](https://spark.apache.org/) with additional data types and operations for ETL workflows. They are used in code generated by the AWS Glue service and can be used in scripts submitted with Glue jobs.



  - [awsglue](awsglue) -- This Python package includes the Python interfaces to the AWS Glue ETL library.



  The libraries in this repository licensed under the [Amazon Software License](http://aws.amazon.com/asl/) (the "License"). They may not be used except in compliance with the License, a copy of which is included here in the LICENSE file.


pkgId: 57ef2fc3a68f7538b91495696205359f1c5a71490586d184da3510e77b1d1553
name: python-awsgnssroutils
arch: src
version: 1.2.3
epoch: 0
release: 1
summary: Utilities for access and manipulation of GNSS radio occultation in the AWS Registry of Open Data
url: https://github.com/gnss-ro/aws-opendata/tree/master/awsgnssroutils
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsgnssroutils-1.2.3-1.src.rpm
checksum_type: sha256
description:
  This package &mdash; **awsgnssroutils** &mdash; contains two utilities
  intended to serve and take advantage of the GNSS radio occultation (RO) data
  in the AWS Registry of Open Data. The first is a database utility,
  which queries the RO database for occultations that satisfy a variety
  of search criteria. The second is a highly efficient collocation-finding
  utility, which finds nadir-scanning radiance sounder data that is coincident
  with GNSS RO data.

  This package can be installed from PyPI. On the Linux command line...

  ```
  pip install awsgnssroutils
  ```

  **Contents**
  1. [First steps](#1-first-steps). These are necessary first steps for basic functionality.
  2. [Database utility](#2-database-utility). Query, subset, and download RO data.
  3. [Collocation utility](#3-collocation-utility). Find nadir radiance scanner data collocated with RO data.



  Before proceeding to use the query utility, be sure to set defaults for
  the database query system. In Python,

  ```
  from awsgnssroutils.database import setdefaults
  setdefaults( metadata_root="/my/path/to/RO/metadata", data_root="/my/path/to/RO/data", version="v1.1" )
  ```

  All queries will attempt to access metadata in a directory hierarchy
  whose root is the first argument in this call, and all attempts to
  download RO data files will attempt to find the requested files in a
  directory hierarchy whose root is the second argument of the call.
  (Of course, rename these root paths to the desired root paths on your
  own file system.) At this point, the only version of RO data published in the
  AWS Registry of Open Data is "v1.1".

  A user can choose to prepopulate all RO metadata, thereby guaranteeing
  great efficiency in all queries. Prepopulating can take up to ten minutes,
  but it only needs to be executed once; perhaps more often if the user
  needs to refresh the metadata. Prepopulating the metadata is done in Python as...

  ```
  from awsgnssroutils.database import populate
  populate()
  ```

  If a user erases metadata files in the metadata root path, future queries
  will still function correctly, but they will have to repopulate the metadata,
  thereby greatly increasing the wall clock time of queries.



  The module *awsgnssroutils.database* obtains RO metadata from the AWS
  Registry of Open Data if needed, queries the metadata according to
  a variety of conditions, permits filtering/subsetting of the results, and
  downloads RO data as desired. The module defines two classes that serve
  as its core engine: *RODatabaseClient* and *OccList*. The first creates a
  portal to a database of RO metadata, and the second is an instance of a
  list of ROs. Each are described below.



  Create an instance of a portal to a metadata on all RO data in the AWS
  Registry of Open Data. This tool is made efficient by storing
  metadata used in previous queries on the local file system. Subsequent
  queries will find this metadata on the local file system and will not
  spend valuable wall clock time repeating the download of the metadata
  of interest. The same holds true for RO data files themselves: previously
  downloaded data are stored on the local file system. The user is free to
  clear out these local "mirrors" of the metadata and data, but this will
  penalize future efficiency for the gain of local disk space.

  **Executing queries.** All queries to the AWS repository of RO data are
  executed through an instance of the *RODatabaseClient* class. The results
  of queries are instances of class OccList. Create an instance of the
  portal class in Python as...

  ```
  from awsgnssroutils.database import RODatabaseClient
  rodb = RODatabaseClient()
  ```

  in which *rodb* is an interface directly to the AWS S3 bucket to access
  the metadata. If metadata has not been prepopulated, queries can be slow.
  If authentication is needed for access to an AWS S3 bucket, this class will
  automatically re-authenticate without user interference.

  There are two methods to create a list of occultations through the
  database client. One is to perform an inquiry in which missions and/or
  a date-time range is specified, and a second is to restore a previously
  saved list of RO data. In Python,

  ```
  occlist = rodb.query( missions="champ" )
  ```

  generates an OccList containing metadata on all CHAMP RO data. The inquiry
  can be performed instead over a range in time. The date-time fields are
  always ISO format times:

  ```
  occlist = rodb.query( datetimerange=("2019-06-01","2019-06-30") )
  ```

  creates an OccList of metadata for all RO soundings in the month of June,
  2019, regardless of mission.

  The other option to creating an OccList is to restore a previously
  saved OccList:

  ```
  occlist = rodb.restore( "old_occlist.json" )
  ```

  in which the old OccList was saved in a JSON format file.

  A jupyter notebook is provided for introduction to the *database* module as
  [database_demonstration](http://github.com/gnss-ro/aws-opendata/blob/master/tutorials/database_demonstration.ipynb).



  An instance of the class OccList is contains the metadata on a list of RO
  soundings along with pointers to the RO data files in the AWS Registry of
  Open Data S3 bucket. AWS functionality is completely embedded in the
  methods of the OccList class. Those methods include the ability to
  subset/filter the list according to geolocation and time,
  GNSS transmitter/constellation, GNSS receiver, whether it is a rising or a
  setting occultation, etc. It also includes the ability to combine
  instances of OccList, save the OccList to a JSON format file for future
  restoration by RODatabaseClient.restore, and even download RO data files.

  In order to filter an OccList previously generated by
  RODatabaseClient.query or RODatabaseClient.restore, use the OccList.filter
  method:

  ```
  champoccs = rodb.query( missions="champ" )
  champoccs_2003 = champoccs.filter( datetimerange=("2003-01-01","2004-01-01") )
  ```

  illustrates how to apply a filter in date-time, retaining all CHAMP RO
  metadata for the year 2003. Filtering can be done in longitude and latitude
  as well:

  ```
  champoccs_US = champoccs.filter( longituderange=(-110,-70), latituderange=(25,55) )
  ```

  and even those can be subset by local time (a.k.a. solar time):

  ```
  champoccs_US_midnight = champoccs_US.filter( localtimerange=(22,2) )
  ```

  in which the local time range is given in hours and can wrap around
  midnight. Other filter options are for the GNSS constellation used as
  transmitters ("G" for GPS, "R" for GLONASS, "E" for Galileo, "C" for
  BeiDou), for individual transmitters ("G01", etc.), for individual
  receivers ("cosmic1c1", "metopb", etc.), and for occultation 'geometry'
  ("rising" vs. "setting").

  One can get information on the metadata in an OccList using the
  OccList.info method. For instance, if you want to get a listing of all of
  the Spire receiver satellites, do

  ```
  spire = rodb.query( "spire" )
  spire_receivers = spire.info( "receiver" )
  ```

  The first step in this process could be time consuming if the Spire
  metadata do not already reside on the local file system and the rodb object
  does not interface with a local repository. One can also get a list of the
  GNSS transmitters tracked by Spire on a particular day by

  ```
  spire_day = spire.filter( datetimerange=("2021-12-01","2021-12-02") )
  spire_day_transmitters = spire_day.info("transmitter")
  ```

  which will give a list of all GNSS transmitters tracked by all Spire
  satellites on December 1, 2021. The spire\_day list can be split up between
  rising and setting RO soundings as well:

  ```
  spire_day_rising = spire_day.filter( geometry="rising" )
  spire_day_setting = spire_day.filter( geometry="setting" )
  ```

  Then it is possible to save the spire metadata OccList to a JSON file
  for future restoration by

  ```
  spire.save( "spire_metadata.json" )
  ```

  The metadata also contain pointers to the RO sounding data files in the
  AWS Open Data bucket. To get information on the data files available,
  use the OccList.info( "filetype" ) method. For example, to find out the
  types of RO data files avialable for the month of June, 2009:

  ```
  June2009 = rodb.query( datetimerange=("2009-06-01","2009-07-01") )
  filetype_dict = June2009.info( "filetype" )
  ```

  which will return a dictionary with the AWS-native RO file types as keys
  with corresponding values being the counts of each. The file types have the
  format "{processing\_center}\_{file\_type}" in which "processing\_center" is an
  RO processing center that contributed to the AWS repository ("ucar",
  "romsaf", "jpl") and the "file\_type" is one of "calibratedPhase",
  "refractivityRetrieval", or "atmosphericRetrieval".

  The values of the longitude, latitude, datetime, and localtimes of the RO
  soundings in an OccList can be obtained using the OccList.values() method:

  ```
  longitudes = June2009.values( "longitude" )
  latitudes = June2009.values( "latitude" )
  localtimes = June2009.values( "localtime" )
  ```

  each of these variables being a masked numpy ndarray.

  Finally, RO data files themselves can be downloaded for subsequent
  scientific analysis using the OccList.download() method. If one wishes to
  download the all RO bending angle data contributed by JPL to the archive
  for the week of June 5-11, 2012, one only need execute the commands

  ```
  week_list = rodb.query( datetimerange=("2012-06-05","2012-06-12") )
  week_list.download( "jpl_refractivityRetrieval", data_root="datadir", keep_aws_structure=False )
  ```

  which will download all file type "refractivityRetrieval" contributed by
  JPL into the directory "datadir". All of the files will be entered into
  just one directory. If instead one wants to download the files maintaining
  the AWS directory structure, which is the default, set the keyword
  *keep\_aws\_structure* to True:

  ```
  week_list.download( "jpl_refractivityRetrieval", keep_aws_structure=True )
  ```

  In this case, because the *data_root* was not specified, it used the
  data_root previously set by setdefaults as the default.



  This package includes a utility that finds nadir-scanner radiance soundings
  that are collocated with RO soundings. It implements the rotation-collocation
  algorithm, which greatly accelerates finding collocations by rotating the
  geolocations of RO soundings into the reference frame of a nadir-scanning
  instrument's scan pattern. Because the scan pattern is constantly moving
  (along with its host satellite), the rotation is time-dependent. The
  algorithm is fully documented in
  [a peer reviewed paper](http://doi.org/10.5194/amt-16-3345-2023).

  The rotation-collocation algorithm is composed of a large suite of low-level
  routines that perform various necessary tasks. If you wish to learn more
  about these low-level routines, consult the jupyter notebook
  [collocation_demonstration](http://github.com/gnss-ro/aws-opendata/blob/master/tutorials/collocation_demonstration.ipynb).

  Among those tasks are
  interfaces to multiple data sources, definitions of various instrument types,
  the SGP4 orbit propagator, implementation of the rotation-collocation method,
  data download capability, and collocation save capability. Several defaults
  must be set in advance if these algorithms are to work.



  Several defaults must be set for access to various online
  data sources. The [Space-Track](http://www.space-track.org) site contains
  two-line element satellite orbit data that are used in the rotation-collocation
  algorithm. The user must establish an account---with username and password---on
  Space-Track.com. The same is true for access to Metop instrument data, which
  hosted on the EUMETSAT Data Store. In this case, the user will have to obtain
  a "consumer key" and a "consumer secret" after first obtaining an account.
  Again, the same is true for NASA Earthdata, which serves as an interface to
  data on the NASA Earth Science Data and Information Systems' DAACs. Finally,
  of course, the user must set the defaults for access to the AWS RO repository
  as described above. **All but the AWS RO repository
  defaults will be stored in the file "~/.collocation", which is created with
  user read-write permissions only.** The AWS RO repository defaults
  are stored in "~/.awsgnssroutilsrc". Since the latter does not contain
  a password or secret key, it is assigned no exclusive access permissions.

  For Space-Track, obtain an account. After having done so, set the defaults
  associated with Space-Track data by

  ```
  from awsgnssroutils.collocation.core.spacetrack import setdefaults
  setdefaults( root_path="/my/path/to/space-track/data", spacetracklogin=("my_username","my_password") )
  ```

  This establishes the directory indicated by *root_path* as the root path where
  all TLE (two-line element) data obtained from Space-Track will be stored on the
  local file system and the username and password of your account with Space-Track.
  Once executed, all future access to Space-Track for orbit TLE data will function
  cleanly without interference from the user.

  For NASA Earthdata, obtain an account. Follow steps like those for Space-Track...

  ```
  from awsgnssroutils.collocation.core.nasa_earthdata import setdefaults
  setdefaults( root_path="/my/path/to/earthdata/data", earthdatalogin=("my_username","my_password") )
  ```

  In this case, the username and password correspond to your NASA Earthdata account's
  username and password.

  For the EUMETSAT Data Store, obtain an account. Your account will grant you access
  tokens in the form of a consumer key and a consumer secret. You can find both on
  [this site](https://api.eumetsat.int/api-key/) after logging in to your EUMETSAT
  data store account. You can then set defaults for access to the EUMETSAT Data Store by...

  ```
  from awsgnssroutils.collocation.core.eumetsat import setdefaults
  setdefaults( root_path="/my/path/to/eumetsat/data", eumetsattokens=("consumer_key","consumer_secret") )
  ```

  Set the consumer key and consumer secret to those granted you in your EUMETSAT account.



  For ease of use, both a single function and a command line utility are provided. The function is
  *awsgnssroutils.collocation.rotcol.execute_rotation_collocation*, and the
  command line utility is *rotcol*. The latter is nothing more than the
  command line implementation of the former but with documentation that can be
  obtained with the "-h" or "--help" switches.

  **The function** is imported by

  ```
  from awsgnssroutils.collocation.rotcol import execute_rotation_collocation
  ```

  The execution of the collocation is done by rotation-collocation. RO data is
  extracted from the AWS RO repository, sounder data is extracted from a EUMETSAT or
  a NASA data source according to the instrument, and RO and sounder data for those
  collocations are written to a NetCDF file.

  ```
  execute_rotation_collocation( missions, datetimerange, ro_processing_center, nadir_instrument, nadir_satellite, output_file )
  ```

  The *missions* is a tuple/list of RO missions as defined for the AWS RO repository;
  *datetimerange* is a 2-element tuple/list containing ISO-format time strings that
  bound the period over which RO data are to be considered for collocation;
  *ro_processing_center* defines the RO processing centers whose RO data is to be
  used as the baseline (as contributed to the AWS RO repository); *nadir_instrument* is
  the nadir-scanning instrument that obtained the soundings to be collocated with the
  RO soundings; *nadir_satellite* is the name of the satellite that hosts the nadir-scanning
  instrument, and *output_file* is the NetCDF file where collocation data is to be written.
  The options for all of these arguments is fluid. At present, the RO processing center
  can be "ucar", "romsaf", or "jpl"; the nadir instrument can be one of the microwave
  instruments "AMSU-A" or "ATMS"; the nadir satellite can be "Metop-A", "Metop-B", "Metop-C"
  (for AMSU-A) or "Suomi-NPP", "JPSS-1", "JPSS-2" (for ATMS). Try

  ```
  execute_rotation_collocation( "cosmic2", ( "2021-03-04", "2021-03-05" ), "ucar", "ATMS", "JPSS-1", "output.nc" )
  ```

  to find all COSMIC-2 RO data that are collocated with JPSS-1 ATMS data for the date of March 4, 2021.
  Results will be written to "output.nc".

  **The command-line utility** is *rotcol*. Upon installation of the package, the script
  will be placed in the session PATH. The Linux command is

  ```
  rotcol -h
  ```

  in order to obtain help. Note that it provides two major options: the is to allow the user
  to set defaults without having to do so in Linux; the second actually executes the
  rotation-collocation algorithm and extracts the collocated sounding data.

  In order to set defaults, execute the following command to get help:

  ```
  rotcol setdefaults -h
  ```

  You will see documentation that allows you to set your defaults (usernames, passwords, data root paths, etc.)
  for the AWS repository ("awsro"), the NASA Earthdata portal ("earthdata"), the EUMETSAT Data
  Store ("eumetsat"), and the Space-Track archive of satellites' orbital TLE data ("spacetrack").
  In order to execute a rotation-collocation, you can get help documentation on doing so
  by

  ```
  rotcol execute -h
  ```

  It is a front-end to the function *execute_rotation_collocation* that also provides
  current information on satellite instruments, satellite names, and available RO data.


pkgId: 6691852727f22729c15490166da5c97afd56e2c45ca16161a7c0cc2a0a062f78
name: python-awsgreengrasspubsubsdk
arch: src
version: 0.1.5
epoch: 0
release: 1
summary: AWS Greengrass IoT Pubsub SDK for Python
url: https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python
rpm_license: License :: OSI Approved :: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsgreengrasspubsubsdk-0.1.5-1.src.rpm
checksum_type: sha256
description:
  This document provides information about the AWS IoT Greengrass PubSub SDK for Python.

  If you have any issues or feature requests, please file an issue or pull request.

  **Note:** This is a library based implementation and replacement for the AWS IoT Greengrass PubSub Framework previoulsy hosted in this repository.



  The AWS IoT Greengrass PubSub SDK for Python provides an IoT PubSub application architecture delivered as a Python library to simplify and accelerate development of distributed IoT applications built on AWS IoT Greengrass Components. The SDK abstracts the AWS IoT Greengrass IPC and MQTT PubSub functionality and uses a data driven message format to route PubSub messages to user defined call-backs. This provides a Low/No-Code PubSub messaging service without the common design dependencies of distributed IoT applications.

  ![pubsub-sdk-overview](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/blob/main/images/pubsub-sdk-overview.png)

  For more details see the AWS IoT Greengrass PubSub SDK:
  * [Developer Guide](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/docs/developer-guide)
  * [API Docs](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/docs/api-docs)
  * [Samples](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/samples)
  * [Detailed Deployment Workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/32dc1f13-985f-4f94-9b86-a859806d28f0)



  The easiest way to get started is to build and deploy the AWS IoT Greengrass PubSub SDK component template described in the [Samples](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/samples) directory.

  For new users just starting out with AWS IoT Greengrass or those that want to see a more detailed example of using the SDK to deploy multiple components that we recommend running through the workshop [Build a Distributed IoT Application with the AWS IoT Greengrass PubSub SDK](https://catalog.us-east-1.prod.workshops.aws/workshops/32dc1f13-985f-4f94-9b86-a859806d28f0/en-US) where you build a Smart Factory IoT application using the AWS IoT Greengrass PubSub SDK.




  *   Python 3.6+



  To configure the AWS IoT Greengrass PubSub SDK to deploy with an AWS IoT Greengrass Component, update the recipe Lifecycle / Install event as per below:
  ```
  "Lifecycle": {
    "Install" : {
      "Timeout" : 300,
      "Script" : "python3 -m pip install awsgreengrasspubsubsdk"
    },
    .....
  ```

   A full example of this is given in the [Greengrass component recipe example](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/blob/main/samples/gg-pubsub-sdk-component-template/src/recipe.json)


  The AWS IoT Greengrass PubSub SDK provides functionality within an AWS IoT Greengrass component. It only has context within that framework and so for production solutions, its preferred to deploy the SDK with the component as described in the previous example. Manual installation examples given below are intended for development machines.

  **Note**: If installing manually, do so as the user that will own the Greengrass component process (i.e: gcc_user by default).


  ```
  python3 -m pip install awsgreengrasspubsubsdk
  ```


  ```
  git clone https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python.git
  python3 -m pip install ./aws-greengrass-pubsub-sdk-for-python
  ```



  Once the AWS IoT Greengrass PubSub SDK is deployed with an AWS IoT Greengrass Component, you can route messages to your application logic via user defined Message Handlers that you register with the SDK

  A production ready AWS IoT Greengrass component template and more detailed examples are provided in the [Samples](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/samples) directory.

  The SDK defines the following required message format (with more details provided in the [Developer Guide](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/docs/developer-guide)
  ```
  {
    "sdk_version": "0.1.4",
    "message_id": "20220403170948930231",
    "status": 200,
    "route": "MyPubSubMessageHandler.pubsub_message_route_target",
    "message": {
      "my-message-param01": "param01",
      "my-message-param02": "param02"
    }
  }
  ```
  The SDK will route received PubSub messages to a user defined message handler class and method as provided in the message **route** value. The message route value is a **Class.Method** namespace representation of the desired message route target.

  Using this approach, the AWS IoT Greengrass PubSub SDK routes PubSub messages to your application logic in easily defined message callbacks.


  1.  Add a method that will be the route of last resort for received PubSub messages and the expected message parameters.
  ```
  def default_message_handler(self, protocol, topic, message_id, status, route, message):

     
     log.error('Received message to unknown route / message handler: {} - message: {}'.format(route, message)))
  ```

  2. Initialise the AWS IoT Greengrass PubSub SDK Client
  ```

  from awsgreengrasspubsubsdk.pubsub_client import AwsGreengrassPubSubSdkClient


  pubsub_base_topic = 'com.my_greengrass.application'


  pubsub_client = AwsGreengrassPubSubSdkClient(pubsub_base_topic, default_message_handler )

  ```

  3. Create one or more user defined message handler class/es with named functions to route PubSub messages with the expected parameters. This method allows easy separation of message processing functionality within your application.
  ```
  class MyPubSubMessageHandler():

      def pubsub_message_route_target(self, protocol, topic, message_id, status, route, message):

          
          log.info('MyPubSubMessageHandler.pubsub_message_route_target received message: {}'.format(message))
  ```

  4. Register the message handler class/es with the PubSub SDK Client with the [register_message_handler](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/docs/api-docs/pubsub_client.md#method-register_message_handler) call.
  ```
  my_pubsub_message_handler = MyPubSubMessageHandler()
  pubsub_client.register_message_handler(my_pubsub_message_handler)
  ```

  5. Activate the IPC and / or MQTT Protocols in the SDK:
  ```

  pubsub_client.activate_ipc_pubsub()


  pubsub_client.activate_mqtt_pubsub()
  ```

  6. Complete!
  On completion of the above and once successfully deployed, your AWS IoT Greengrass component will listen on the default Ingress topic **(base-pubsub-topic/THING_NAME/ingress)** and any other user defined topics. The SDK will begin routing PubSub messages to your registered Message Handler classes as per the message **route** value. As describe above, any message received on the SDK subscribed topic with value **route = MyPubSubMessageHandler.pubsub_message_route_target** will be automatically forwarded to the method provided in the example.

  **Note:** If the route value does not match any route target methods, the message will be forwarded to the default_message_handler class.


  The SDK provides a programmatic means of subscribing to user defined topics. You can subscribe to any topic that is permitted by the access policy provided in the component recipe.
  ```
  my_topic = 'my/interesting/topic'


  pubsub_client.subscribe_to_topic('ipc', topic)


  pubsub_client.subscribe_to_topic('mqtt', topic)


  pubsub_client.subscribe_to_topic('ipc_mqtt', topic)

  ```

  If the protocol (IPC or MQTT) is activated, the SDK will subscribe to the topic and begin routig messages immediatly. If not, the subscription request will be stored and actioned when the selected protocol is activated.


  The SDK provides a message formatter class to ensure consistent messages. See the [message_formatter](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/docs/api-docs/message_formatter.md) API Docs for more detail.

  ```

  from awsgreengrasspubsubsdk.message_formatter import PubSubMessageFormatter
  message_formatter = PubSubMessageFormatter()


  receive_route = 'MyPubSubMessageHandler.pubsub_message_response'
  my_message = {
      "my-message-param01": "param01",
      "my-message-param02": "param02"
  }

  sdk_format_msg = message_formatter.get_message(route=receive_route, message=my_message)


  pubsub_client.publish_message('ipc_mqtt', sdk_format_msg)
  ```



  1. The AWS IoT Greengrass PubSub SDK (`awsgreengrasspubsubsdk`) installs [awsiotsdk](https://github.com/aws/aws-iot-device-sdk-python-v2) as a dependancy with the following listed [Installation issues](https://github.com/aws/aws-iot-device-sdk-python-v2#installation).

  2. If running the AWS IoT Greengrass component with root privileges, you will need to install in a python virtual environment by replacing the component recipe install policy with the below:
  ```
  "Install" : {
            "Timeout" : 300,
            "Script" : "python3 -m venv pubsubsdk; . pubsubsdk/bin/activate; pip3 install --upgrade pip; python3 -m pip install awsgreengrasspubsubsdk"
          }
  ```



  A complete production ready AWS IoT Greengrass component template is provided in the [Samples](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/samples) directory.



  The best way to interact with our team is through GitHub. You can [open an issue](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/issues) for guidance, bug reports, or feature requests.

  Please make sure to check out our resources before opening an issue:
  * [Developer Guide](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/docs/developer-guide)
  * [API Docs](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/tree/main/docs/api-docs)
  * [AWS IoT Greengrass PubSub SDK Deployment Workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/32dc1f13-985f-4f94-9b86-a859806d28f0)
  * [AWS IoT Greengrass V2 Developer Guide](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)
  * [AWS IoT Core Documentation](https://docs.aws.amazon.com/iot/)
  * [AWS Dev Blog](https://aws.amazon.com/blogs/?awsf.blog-master-iot=category-internet-of-things%23amazon-freertos%7Ccategory-internet-of-things%23aws-greengrass%7Ccategory-internet-of-things%23aws-iot-analytics%7Ccategory-internet-of-things%23aws-iot-button%7Ccategory-internet-of-things%23aws-iot-device-defender%7Ccategory-internet-of-things%23aws-iot-device-management%7Ccategory-internet-of-things%23aws-iot-platform)



  We need your help in making this SDK great. Please participate in the community and contribute to this effort by submitting issues, participating in discussion forums and submitting pull requests through the following channels.

  *   [Contributions Guidelines](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/blob/main/CONTRIBUTING.md)
  *   Submit [Issues, Feature Requests or Bugs](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/issues)



  *   [AWS IoT Core Documentation](https://docs.aws.amazon.com/iot/)
  *   [AWS IoT Developer Guide](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) ([source](https://github.com/awsdocs/aws-iot-docs))
  *   [AWS Dev Blog](https://aws.amazon.com/blogs/?awsf.blog-master-iot=category-internet-of-things%23amazon-freertos%7Ccategory-internet-of-things%23aws-greengrass%7Ccategory-internet-of-things%23aws-iot-analytics%7Ccategory-internet-of-things%23aws-iot-button%7Ccategory-internet-of-things%23aws-iot-device-defender%7Ccategory-internet-of-things%23aws-iot-device-management%7Ccategory-internet-of-things%23aws-iot-platform)




  See [CONTRIBUTING](https://github.com/awslabs/aws-greengrass-labs-iot-pubsub-sdk-for-python/blob/main/CONTRIBUTING.md#security-issue-notifications) for more information.



  This library is licensed under the MIT-0 License. See the LICENSE file.


pkgId: ce3003bceba96c678e470491871184b0938466417f5f243c42534d752be5ebae
name: python-awsiot-credentialhelper
arch: src
version: 1.0.2
epoch: 0
release: 1
summary: AWS IoT Core Credential Provider Session Helper
url: https://github.com/awslabs/aws-iot-core-credential-provider-session-helper
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsiot-credentialhelper-1.0.2-1.src.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/awsiot-credentialhelper.svg)][pypi status]
  [![Status](https://img.shields.io/pypi/status/awsiot-credentialhelper.svg)][pypi status]
  [![Python Version](https://img.shields.io/pypi/pyversions/awsiot-credentialhelper)][pypi status]
  [![License](https://img.shields.io/pypi/l/awsiot-credentialhelper)][license]

  [![Tests](https://github.com/awslabs/aws-iot-core-credential-provider-session-helper/workflows/Tests/badge.svg)][tests]
  [![codecov](https://codecov.io/gh/awslabs/aws-iot-core-credential-provider-session-helper/branch/main/graph/badge.svg?token=8V1XZY37BQ)](https://codecov.io/gh/awslabs/aws-iot-core-credential-provider-session-helper)

  [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)][pre-commit]
  [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)][black]

  [pypi status]: https://pypi.org/project/awsiot-credentialhelper/
  [tests]: https://github.com/awslabs/aws-iot-core-credential-provider-session-helper/actions?workflow=Tests
  [pre-commit]: https://github.com/pre-commit/pre-commit
  [black]: https://github.com/psf/black

  This package provides an easy way to create a **refreshable** Boto3 Session using the [AWS IoT Core credential provider](https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html).

  <p align="center">
  <a href="https://awslabs.github.io/aws-iot-core-credential-provider-session-helper/">Package documentation</a>
  </p>



  - Automatic refresh of [Boto3 credentials](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html) through requests to the AWS IoT Core credential provider. No need to manage or maintain refresh times.
  - Uses the underlying [AWS CRT Python](https://github.com/awslabs/aws-crt-python) bindings for querying the credential provider instead of the Python standard library. This provides support for both certificate and private keys as files _or_ as environment variables.
  - Extensible to using other TLS methods such as PKCS#11 hardware security modules (see Advanced section).
  - Only requires four function calls to create a session helper, Boto3 session, Boto3 client, and then client API calls.



  - Python 3.8 - 3.11. Support not include for 3.7 as that version will be end of life in June, 2023. If 3.7 support _is_ important, please open an issue to discuss.



  You can install _AWS IoT Core Credential Provider Session Helper_ via [pip] from [PyPI]:

  ```console
  python3 -m pip install awsiot-credentialhelper
  ```



  Prior to use, ensure all cloud-side resources for IAM and AWS IoT Core have been properly created and configured. Then, with the AWS IoT registered X.509 certificate and corresponding private key (e.g., `iot_thing.pem` and `iot_thing.pem.key`), you can create and use the helper as follows:

  ```python
  from awsiot_credentialhelper.boto3_session import Boto3SessionProvider


  boto3_session = Boto3SessionProvider(
      endpoint="your_endpoint.credentials.iot.us-west-2.amazonaws.com",
      role_alias="your_aws_iot_role_alias_name",
      certificate="iot_thing.pem",
      private_key="iot_thing.pem.key",
      thing_name="iot_thing",
  ).get_session()


  print(boto3_session.client("sts").get_caller_identity())
  {'UserId': 'AROA...F3D:4686c...0a0d', 'Account': '1234567890', 'Arn': 'arn:aws:sts::1234567890:assumed-role/iam_role_name/4686c...0a0d', 'ResponseMetadata': {'RequestId': 'cc04...10bc', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'cc04...10bc', 'content-type': 'text/xml', 'content-length': '554', 'date': 'Tue, 21 Feb 2023 21:18:23 GMT'}, 'RetryAttempts': 0}}


  iot = boto3_session.client("iot")
  result = iot.list_things()
  ```

  Please see the [package documentation](https://awslabs.github.io/aws-iot-core-credential-provider-session-helper/) for more details and advanced use.



  Contributions are very welcome.
  To learn more, see the [Contributor Guide].



  Distributed under the terms of the [Apache 2.0 license][license].
  Details on third party packages used by this package can be found [here](https://github.com/awslabs/aws-iot-core-credential-provider-session-helper/blob/main/THIRD-PARTY-LICENSES.txt).



  If you encounter any problems, please [file an issue](https://github.com/awslabs/aws-iot-core-credential-provider-session-helper/issues/new) along with a detailed description.



  This project template was generated from a fork of [@cjolowicz]'s [Hypermodern Python Cookiecutter] template.

  [@cjolowicz]: https://github.com/cjolowicz
  [pypi]: https://pypi.org/
  [hypermodern python cookiecutter]: https://github.com/cjolowicz/cookiecutter-hypermodern-python
  [pip]: https://pip.pypa.io/

  <!-- github-only -->

  [license]: https://github.com/awslabs/aws-iot-core-credential-provider-session-helper/blob/main/LICENSE
  [contributor guide]: https://github.com/awslabs/aws-iot-core-credential-provider-session-helper/blob/main/CONTRIBUTING.md


pkgId: 23a76b48f78f7a2e65d2fdc297039877a7643eaa2f826e6a460d8cad97146481
name: python-awsiotsdk
arch: src
version: 1.22.0
epoch: 0
release: 1
summary: AWS IoT SDK based on the AWS Common Runtime
url: https://github.com/aws/aws-iot-device-sdk-python-v2
rpm_license: License :: OSI Approved :: Apache Software License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsiotsdk-1.22.0-1.src.rpm
checksum_type: sha256
description:
  [![Version](https://img.shields.io/pypi/v/awsiotsdk.svg?style=flat)](https://pypi.org/project/awsiotsdk/)

  This document provides information about the AWS IoT Device SDK v2 for Python. This SDK is built on the [AWS Common Runtime](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html)

  *__Jump To:__*
  * [Installation](#installation)
  * [Samples](samples)
  * [Getting Help](#getting-help)
  * [FAQ](./documents/FAQ.md)
  * [API Docs](https://aws.github.io/aws-iot-device-sdk-python-v2/)
  * [MQTT5 User Guide](./documents/MQTT5_Userguide.md)
  * [Migration Guide from the AWS IoT SDK for Python v1](./documents/MIGRATION_GUIDE.md)





  * Python 3.7+

  [Step-by-step instructions](./documents/PREREQUISITES.md)





  ```
  python3 -m pip install awsiotsdk
  ```



  ```
  python -m pip install awsiotsdk
  ```



  ```bash

  mkdir sdk-workspace
  cd sdk-workspace


  git clone -b <SDK_VERSION> https://github.com/aws/aws-iot-device-sdk-python-v2.git




  sed -i "s/__version__ = '1.0.0-dev'/__version__ = '<SDK_VERSION>'/" \
    aws-iot-device-sdk-python-v2/awsiot/__init__.py


  python3 -m pip install ./aws-iot-device-sdk-python-v2
  ```



  [Samples README](samples)



  The best way to interact with our team is through GitHub. You can open a [discussion](https://github.com/aws/aws-iot-device-sdk-python-v2/discussions) for guidance questions or an [issue](https://github.com/aws/aws-iot-device-sdk-python-v2/issues/new/choose) for bug reports, or feature requests. You may also find help on community resources such as [StackOverFlow](https://stackoverflow.com/questions/tagged/aws-iot) with the tag [#aws-iot](https://stackoverflow.com/questions/tagged/aws-iot) or if you have a support plan with [AWS Support](https://aws.amazon.com/premiumsupport/), you can also create a new support case.

  Please make sure to check out our resources too before opening an issue:

  * [FAQ](./documents/FAQ.md)
  * [API Docs](https://aws.github.io/aws-iot-device-sdk-python-v2/)
  * [IoT Guide](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) ([source](https://github.com/awsdocs/aws-iot-docs))
  * Check for similar [Issues](https://github.com/aws/aws-iot-device-sdk-python-v2/issues)
  * [AWS IoT Core Documentation](https://docs.aws.amazon.com/iot/)
  * [Dev Blog](https://aws.amazon.com/blogs/?awsf.blog-master-iot=category-internet-of-things%23amazon-freertos%7Ccategory-internet-of-things%23aws-greengrass%7Ccategory-internet-of-things%23aws-iot-analytics%7Ccategory-internet-of-things%23aws-iot-button%7Ccategory-internet-of-things%23aws-iot-device-defender%7Ccategory-internet-of-things%23aws-iot-device-management%7Ccategory-internet-of-things%23aws-iot-platform)
  * Integration with AWS IoT Services such as
  [Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html)
  and [Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-jobs.html)
  is provided by code that been generated from a model of the service.
  * [Contributions Guidelines](./documents/CONTRIBUTING.md)



  This library is licensed under the [Apache 2.0 License](./documents/LICENSE).

  Latest released version: v1.22.0


pkgId: 60cf9d439e7d82867b4bc055bd7053dbc99c7ad471a93a6b08889f30ef398a55
name: python-awsipranges
arch: src
version: 0.3.3
epoch: 0
release: 1
summary: Work with the AWS IP address ranges in native Python.
url: https://aws-samples.github.io/awsipranges/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsipranges-0.3.3-1.src.rpm
checksum_type: sha256
description:
  Amazon Web Services (AWS) publishes its [current IP address ranges](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html) in [JSON](https://ip-ranges.amazonaws.com/ip-ranges.json) format. Python v3 provides an [ipaddress](https://docs.python.org/3/library/ipaddress.html) module in the standard library that allows you to create, manipulate, and perform operations on IPv4 and IPv6 addresses and networks. Wouldn't it be nice if you could work with the AWS IP address ranges like native Python objects?

  - Work with the AWS IP prefixes as a simple `AWSIPPrefixes` collection.
  - Quickly check if an IP address, interface, or network is contained in the AWS IP address ranges.
  - Get the AWS IP prefix that contains an IP address, interface, or network.
  - See what services are served from an IP prefix.
  - Filter the AWS IP prefixes by _region_, _network border group_, _service_, and IP prefix _version_.
  - Use the AWS prefix data in your app or automation scripts in the format required by your infrastructure.
  - Easily validate the TLS certificate presented by the IP ranges server.
  - awsipranges has _no third-party dependencies_ and is compatible with CPython v3.7+.
  ```python
  >>> import awsipranges
  >>> aws_ip_ranges = awsipranges.get_ranges(cafile="amazon_root_certificates.pem")
  >>> '52.94.5.15' in aws_ip_ranges
  True
  >>> aws_ip_ranges['52.94.5.15']
  AWSIPv4Prefix('52.94.5.0/24', region='eu-west-1', network_border_group='eu-west-1', services=('AMAZON', 'DYNAMODB'))
  >>> aws_ip_ranges.filter(services='CODEBUILD')
  {'create_date': datetime.datetime(2021, 8, 24, 1, 31, 14, tzinfo=datetime.timezone.utc),
   'ipv4_prefixes': (AWSIPv4Prefix('3.26.127.24/29', region='ap-southeast-2', network_border_group='ap-southeast-2', services=('CODEBUILD',)),
                     AWSIPv4Prefix('3.38.90.8/29', region='ap-northeast-2', network_border_group='ap-northeast-2', services=('CODEBUILD',)),
                     AWSIPv4Prefix('3.68.251.232/29', region='eu-central-1', network_border_group='eu-central-1', services=('CODEBUILD',)),
                     AWSIPv4Prefix('3.98.171.224/29', region='ca-central-1', network_border_group='ca-central-1', services=('CODEBUILD',)),
                     AWSIPv4Prefix('3.101.177.48/29', region='us-west-1', network_border_group='us-west-1', services=('CODEBUILD',)),
   'ipv6_prefixes': (),
   'sync_token': '1629768674'}
  >>> for prefix in aws_ip_ranges.filter(regions='eu-west-1', services='DYNAMODB'):
  52.94.5.0 255.255.255.0
  52.94.24.0 255.255.254.0
  52.94.26.0 255.255.254.0
  52.119.240.0 255.255.248.0
  ```

  Installing and upgrading `awsipranges` is easy:
  **Install via PIP**
  ```shell
  ❯ pip install awsipranges
  ```
  **Upgrade to the latest version**
  ```shell
  ❯ pip install --upgrade awsipranges
  ```

  Excellent documentation is now available at: https://aws-samples.github.io/awsipranges/
  Check out the [Quickstart](https://aws-samples.github.io/awsipranges/quickstart.html) to dive in and begin using awsipranges.

  See [CONTRIBUTING](https://github.com/aws-samples/awsipranges/blob/main/CONTRIBUTING.md) for information on how to contribute to this project.

  See [CONTRIBUTING](https://github.com/aws-samples/awsipranges/blob/main/CONTRIBUTING.md#security-issue-notifications) for information on how to report a security issue with this project.

  This project is licensed under the [Apache-2.0 License](https://github.com/aws-samples/awsipranges/blob/main/LICENSE).


pkgId: 59a6a54b7604fc35471d76b97a846bb175216445528b541bb55c893543133735
name: python-awsjar
arch: src
version: 0.2.11
epoch: 0
release: 1
summary: Jar make it easy to store the state of your AWS Lambda functions.
url: https://github.com/ysawa0/awsjar
rpm_license: Apache 2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsjar-0.2.11-1.src.rpm
checksum_type: sha256
description:
  [![PyPI version](https://badge.fury.io/py/awsjar.svg)](https://badge.fury.io/py/awsjar)
  [![Downloads](https://pepy.tech/badge/awsjar/month)](https://pepy.tech/project/awsjar)
  [![Python 3.6](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/downloads/release/python-360/)
  [![Travis](https://travis-ci.com/ysawa0/awsjar.svg?branch=master)](https://travis-ci.com/ysawa0/awsjar)
  [![Coverage Status](https://coveralls.io/repos/github/ysawa0/awsjar/badge.svg?branch=master)](https://coveralls.io/github/ysawa0/awsjar?branch=master)

  <!--
  <a href="https://github.com/ambv/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
  -->

  <p align="center">
    <img src="https://raw.githubusercontent.com/ysawa0/awsjar/master/docs/logo.png" alt="Jar Logo" width="45%" height="45%"/>
  </p>


  🏺 [AWSJar](https://github.com/ysawa0/awsjar) makes it easy to save data from AWS Lambda.

  The data (either a dict, list, float, int, or string) can be saved within the Lambda itself as an environment variable or on S3.


  ```
  pip install awsjar
  ```



  ```
  import awsjar

  def lambda_handler(event, context):
      jar = awsjar.Jar(context.function_name)
      data = jar.get()  # Will return an empty dict if state does not already exist.

      s = data.get("sum", 0)
      data["sum"] = s + 1

      jar.put(data)

      return data
  ```

  ```
  import awsjar
  import requests


  def lambda_handler(event, context):
      jar = awsjar.Jar(context.function_name)
      data = jar.get()  # Will return an empty dict if state does not already exist.

      last_status_code = data.get("last_status_code", 200)

      result = requests.get('http://example.com')
      cur_status_code = result.status_code

      if last_status_code != 200 and cur_status_code != 200:
          print('Website might be down!')

      jar.put({'last_status_code': cur_status_code})
  ```


  ```
  import awsjar


  bkt = awsjar.Bucket('my-bucket', key='state.json')

  data = {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}
  bkt.put(data)

  state = bkt.get()
  >> {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}
  ```


  1. [Jar](#jar)
      1. [Initialization](#jar-init)
      2. [Save Data](#jar-save-data)
      2. [Serialize Data](#jar-serialize)
      2. [IAM Role for Lambda](#jar-iam)
  2. [Bucket](#bucket)
      1. [Initialization](#bucket-init)
      2. [Save data](#bucket-save-data)
      3. [Specifying Keys](#bucket-specify)
      3. [S3 Versioning](#bucket-version)
      4. [Serialize Data](#bucket-serialize)


  Save your data within the Lambda itself, as an environment variable.

  This method has **no associated costs** but AWS only allows you to **store up to 4KB of data** in the environment variables.

  Jar can compress the data before storing it, allowing **up to about 8KB of uncompressed data.**

  This may not seem like much, but it can cover a lot of use cases. It's also nice to not have to provision extra resources and keep everything self contained.
  Here's a 7KB list that will fit with Jar.
  ```
  x = list(range(1400))
  >> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399]
  jar.put(x)
  ```


  ```
  import awsjar


  jar = awsjar.Jar(lambda_name='sams-lambda', region='us-east-1')


  jar = awsjar.Jar(lambda_name='sams-lambda')


  jar = awsjar.Jar(lambda_name='sams-lambda', compression=True)
  ```



  ```
  data = {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}
  jar.put(data)

  state = jar.get()
  >> {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}
  ```


  Jar comes with datetime encoders/decoders for you to use.

  It uses the standard library json.dumps and json.loads to serialize data so it's possible to write your own encoder/decoders to serialize your data.

  [Here's some instructions](https://www.google.com/search?client=firefox-b-1-ab&ei=FrI2XIe9M-Xk9APIzJbwCw&q=python+json+serialize+data&oq=python+json+serialize+data&gs_l=psy-ab.3..0i22i30l2.51201.51646..51753...0.0..0.183.542.3j2......0....1..gws-wiz.......0i71j0i67j0.5HjqPa8O5YE)
  ```
  from awsjar import Jar, datetime_decoder, datetime_encoder
  from datetime import datetime

  jar = Jar(
      lambda_name=lambda_name,
      region=region,
      decoder=datetime_decoder,
      encoder=datetime_encoder,
  )
  time = datetime.now()

  data = {"list": [1, 2, 3], "dt1": time}

  jar.put(data)
  x = jar.get()
  >> {"list": [1, 2, 3], 'dt1': datetime.datetime(2019, 1, 9, 18, 49, 44, 847202)}
  ```


  Any Lambda using Jar to save to an env var will need these permissions specified in the Role.
  ```
  {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Sid": "VisualEditor0",
              "Effect": "Allow",
              "Action": [
                  "lambda:UpdateFunctionConfiguration",
                  "lambda:GetFunctionConfiguration"
              ],
              "Resource": "*"
          }
      ]
  }
  ```


  Save your data to S3.


  ```
  import awsjar

  bkt = awsjar.Bucket(bucket='my-bucket', key='state.json')


  bkt = awsjar.Bucket(bucket='my-bucket', key='state.json', region='us-east-1')


  bkt = awsjar.Bucket(bucket='my-bucket', key='state.json', pretty=True)
  ```


  ```
  data = {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}
  bkt.put(data)

  state = bkt.get()
  >> {'num_acorns': 50, 'acorn_hideouts': ['tree', 'lake', 'backyard']}

  bkt.delete()  # Delete the object
  bkt.delete(key="key123")  # Delete the object
  ```


  You can specify the key to override the key that was used in initialization.
  ```
  bkt = aj.Bucket(bucket='my-bucket', key='state.json')
  bkt.put(['test'])  # Saved to s3://my-bucket/state.json

  data = ['override']
  bkt.put(data, key="override.json")  # Saved to s3://my-bucket/override.json

  state = bkt.get(key="override.json")
  >> ['override']
  ```


  S3 has an [eventual consistency data model](https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel)

  For example, this means that getting an object immediately after overwriting it may not return the data you expect.

  To overcome this, enable [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html)

  If an S3 Bucket has versioning enabled, Bucket will detect it automatically and fetch the latest version of an object on any `get()` calls.

  ```

  bkt.is_versioning_enabled()


  bkt.enable_versioning()


  bkt.enable_versioning()
  ```


  Same as Jar



  Please see the [contributing guide](CONTRIBUTING.md) for more specifics.



  Please use the [Issues](https://github.com/ysawa0/awsjar/issues) page

  I greatly appreciate any feedback / suggestions! Email me at: yukisawa@gmail.com



  Distributed under the Apache License 2.0. See [`LICENSE`](LICENSE) for more information.


pkgId: 76ed4ad0638d697f253a53110026a219b29359f6f043c0aedf2938ad90518c65
name: python-awslambdaric-stubs
arch: src
version: 0.1.0
epoch: 0
release: 1
summary: Stubs for AWS Lambda Python Runtime Interface Client(awslambdaric)
url: https://github.com/toidi/awslambdaric-stubs
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awslambdaric-stubs-0.1.0-1.src.rpm
checksum_type: sha256
description:
  This package contains type stubs to provide more precise
  static types and type inference for awslambdaric.



  ```console
  $ pip install awslambdaric-stubs
  ```


pkgId: f41e1c56966948d111f67d6a4d37c9dc957557b357d1cea76680812f7bea38d3
name: python-awslimitchecker
arch: src
version: 12.0.0
epoch: 0
release: 1
url: https://github.com/jantman/awslimitchecker
rpm_license: GNU Affero General Public License v3 or later (AGPLv3+)
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awslimitchecker-12.0.0-1.src.rpm
checksum_type: sha256
summary:
  A script and python module to check your AWS service limits and usage, and warn when usage approaches limits.

description:
  Master:
  Develop:
  A script and python module to check your AWS service limits and usage, and warn when usage approaches limits.
  Users building out scalable services in Amazon AWS often run into AWS' `service limits <http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html>`_ -
  often at the least convenient time (i.e. mid-deploy or when autoscaling fails). Amazon's `Trusted Advisor <https://aws.amazon.com/premiumsupport/trustedadvisor/>`_
  can help this, but even the version that comes with Business and Enterprise support only monitors a small subset of AWS limits
  and only alerts *weekly*. The new Service Quotas service can also help with this, but relies on CloudWatch alarms per-limit to notify
  you when you approach your limits; this cannot easily scale to the hundreds of current service limits. awslimitchecker provides a command line
  script and reusable Python package that queries your current usage of AWS resources and compares it to limits (hard-coded AWS defaults that you
  can override, API-based limits where available, Service Quotas data where available, or data from Trusted Advisor where available), notifying
  you when you are approaching or at your limits.
  Full project documentation for the latest release is available at `http://awslimitchecker.readthedocs.io/en/latest/ <http://awslimitchecker.readthedocs.io/en/latest/>`_.


pkgId: 21dde9b78e71c91ea7c4dbaaf65f88577a899801a0f0dfc483c9236cb0d4658d
name: python-awsparams
arch: src
version: 1.5.5
epoch: 0
release: 1
summary: A simple CLI and Library for adding/removing/renaming/copying AWS Param Store Parameters
url: https://github.com/byu-oit/awsparams
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsparams-1.5.5-1.src.rpm
checksum_type: sha256
description:
  Version 1 of this library is drastically different than previous versions.
  The CLI Application hasn't changed but the library it uses has.
  Please pay extra attention to the examples below or look at the underlying class for more information.



  The current (Jul 2017) AWS Console for the Systems Manager Parameter
  Store is good for adding and editing the values of parameters, but
  misses key productivity functions like copying (especially en mass),
  renaming, etc. The current `aws ssm` CLI is very similar in
  functionality to the AWS Console.

  This script is to automate a lot of the manual work currently needed
  with the existing AWS-provided UIs.


  Full documentation can be found here: https://awsparams.readthedocs.io/en/latest/



    - AWSParams requires Python 3.6+
    - Depending on your Python3.6 install either `pip install awsparams` or `pip3 install awsparams`
      - If you're on windows, make sure that `C:\Users\{your user}\AppData\Roaming\Python\{your python version}\Scripts` has been added to your user path.




  ```python
  from awsparams import AWSParams


  aws_params = AWSParams()


  aws_params = AWSParams('MyProfile')


  param = get_parameter('test1')



  param.Name # 'test1'
  param.Value # 'test123'
  param.Type # 'SecureString'


  params = get_all_parameters(prefix="testing.testing.")




  params = get_all_parameters(prefix="/testing/testing/", by_path=True)




  params = get_all_parameters(prefix="/testing/testing/", by_path=True, trim_name=False)




  value = get_parameter_value('test1')

  ```
  For more detailed examples of usage as a library see the cli implementation [here](https://github.com/byu-oit/awsparams/blob/master/awsparams/cli.py).


  Usage can be referenced by running `awsparams --help` or `awsparams
  subcommand --help` commands:

      Usage: awsparams [OPTIONS] COMMAND [ARGS]...

      Options:
      --version  Show the version and exit.
      --help     Show this message and exit.

      Commands:
      cp   Copy a parameter, optionally across accounts
      ls   List Paramters, optional matching a specific...
      mv   Move or rename a parameter
      new  Create a new parameter
      rm   Remove/Delete a parameter
      set  Edit an existing parameter





  ls names only: `awsparams ls`

  ls with values no decryption: `awsparams ls --values` or `awsparams ls -v`

  ls with values and decryption: `awsparams ls --with-decryption`

  ls by prefix: `awsparams ls appname.prd`

  ls with values, formatted for using in a Jetbrains run configuration: `awsparams ls -r <prefix>`
  or `awsparams ls --jetbrains-run-config <prefix>`

  ls with values, formatted for using in a `.env` file: `awsparams ls -e <prefix>`
  or `awsparams ls --dot-env <prefix>`

  ls with values, formatted for using in a `.tfvars` file: `awsparams ls -t <prefix>`
  or `awsparams ls --tfvars <prefix>`

  For the above two options, add the `-q` or `--esc-quotes` flag for adding `\` in front of any quotation marks in
  the values, such as in stringify-ed JSON objects. Most `.env` file parsers don't require this, but `.tfvars`
  probably does.

  Add the `--delimiter <delimiter>` (or `-d <delimiter>`) option to override the default delimiter (`/`), if necessary.



  new interactively: `awsparams new`

  new semi-interactively: `awsparams new --name appname.prd.username`

  new non-interactive: `awsparams new --name appname.prd.usrname --value parameter_value
  --description parameter_descripton`



  copy a parameter: `awsparams cp appname.prd.username newappname.prd.username`

  copy set of parameters with prefix appname.dev. to appname.prd.: `awsparams cp appname.dev. appname.prd. --prefix`

  copy set of parameters starting with prefix repometa-generator.prd
  overwrite existing parameters accross different accounts: `awsparams cp repometa-generator.prd --src_profile=dev --dst_profile=trn
  --prefix=True`

  copy single parameters accross different accounts: `awsparams cp appname.dev.username appname.trb.us`


  To contribute:
  1. Make a PR to master
     - In your changes, make sure to manually bump the package version in the `pyproject.toml` file to whatever version
     you think is appropriate.
  2. Once the PR is approved, merge it in to master.
  3. Create a new release and a new tag where the version in the tag is equal to the new version you set in the
     `pyproject.toml` file.
  4. Once you publish the release, check the GitHub actions and notice that it is automatically deploying the package.
  5. Confirm that the deploy succeeds.
      - If anything goes wrong, fix it and then re-run the workflow.
      - You may have to delete your release/tag and recreate it.


pkgId: f8b2f5e714b4ef55e2458155c81b8535ae040793756fbc1ad770a28b8c47735b
name: python-awsso
arch: src
version: 0.4.9
epoch: 0
release: 1
summary: aws command line tool
url: https://github.com/Hireteammate/tools.git
rpm_license: None
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsso-0.4.9-1.src.rpm
checksum_type: sha256
description:
  - aws cli install version 2.0+

  https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

  - kubectl install

  https://kubernetes.io/docs/tasks/tools/


  - terraform install

  https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli

  - helm install
    - brew install kubernetes-helm

  - copy or create symbol link of awstool to /usr/local/bin/awstool
  - add this line to `~/.bashrc`

    eval "$(register-python-argcomplete awsso)"

  Then you use awsso to login aws, switch aws account, login ec2 instance, search or update secrets manager


pkgId: 74bd3ccf4c5183ffe27e21b2fd7c30d540a7d5ac202d319ab2cde8a29e265a12
name: python-awstin
arch: src
version: 0.0.22
epoch: 0
release: 1
summary: Utilities for building and testing AWS applications in Python
url: https://https://github.com/k2bd/awstin
rpm_license: MIT License
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awstin-0.0.22-1.src.rpm
checksum_type: sha256
description:
  [![PyPI](https://img.shields.io/pypi/v/awstin)](https://pypi.org/project/awstin/) ![Dev Status](https://img.shields.io/pypi/status/awstin)

  ![CI Build](https://github.com/k2bd/awstin/workflows/CI/badge.svg)
  [![Documentation Status](https://readthedocs.org/projects/awstin/badge/?version=latest)](https://awstin.readthedocs.io/en/latest/?badge=latest)
  [![codecov](https://codecov.io/gh/k2bd/awstin/branch/master/graph/badge.svg)](https://codecov.io/gh/k2bd/awstin)


  High-level utilities for building and testing AWS applications in Python.




  [![DynamoDB](https://img.shields.io/github/milestones/progress/k2bd/awstin/1)](https://github.com/k2bd/awstin/milestone/1)



  To use DynamoDB either the `TEST_DYNAMODB_ENDPOINT` (for integration
  testing) or `AWS_REGION` (for production) environment variable must be set.

  DynamoDB is accessed through Python data models that users define to represent
  structured data in tables.

  ```python
  from awstin.dynamodb import Attr, DynamoModel, Key


  class User(DynamoModel):
      
      _table_name_ = "Users"

      
      user_id = Key()

      
      favorite_color = Attr()

      
      
      account_age = Attr("ageDays")
  ```

  Tables are tied to these data models. They'll be returned when items are
  retrieved from the table. Also, `put_item` takes instances of this data model class.

  These data models also define projection expressions, so only those attributes
  are retrieved from `get_item`, `query`, and `scan` calls.

  ```python
  from awstin.dynamodb import DynamoDB


  dynamodb = DynamoDB()


  tables = dynamodb.list_tables()


  users_table = dynamodb[User]


  user = User(
      user_id="user123",
      favorite_color="Blue",
      account_age=120,
  )
  users_table.put_item(user)



  item1 = users_table["user123"]


  table2 = dynamodb[AnotherTableModel]
  item2 = table2[("hashval", 123)]


  item3 = table2[{"hashkey_name": "hashval", "sortkey_name": 123}]
  ```

  Query and scan filters can be built up using these data models as well. Results can be iterated without worrying about pagination. `Table.scan` and `Table.query` yield items, requesting another page of items lazily only when it's out of items in a page.

  ```python
  scan_filter = (
      (User.account_age > 30)
      & (User.favorite_color.in_(["Blue", "Green"]))
  )

  for user in users_table.scan(scan_filter):
      ban_user(user)
  ```

  Queries must be given a query expression and can optionally be given a filter expression. Query expressions must represent valid DynamoDB queries.

  ```python
  class Student(DynamoModel):
      _table_name_ = "Students"

      
      name = Key()

      
      year = Key()

      homeroom = Attr()


  students_table = dynamodb[Student]

  query_expression = (Student.name == "John") & (Student.year >= 10)
  filter_expression = Student.homeroom == "Smith"

  results = students_table.query(
      query_expression=query_expression,
      filter_expression=filter_expression,
  )
  ```

  Indexes work identically, but must have a `_index_name_` attribute on the data
  model. Indexes can be used for queries and scans.

  ```python
  class ByHomeroomIndex(DynamoModel):
      _table_name_ = "Students"
      _index_name_ = "ByHomeroom"

      
      homeroom = Key()

      
      name = Key()

      year = Attr()


  homeroom_index = dynamodb[ByHomeroomIndex]

  query_expression = (
      (ByHomeroomIndex.homeroom == "Doe")
      & (ByHomeroomIndex.name > "B")
  )
  filter_expression = ByHomeroomIndex.year > 11

  items = list(homeroom_index.query(query_expression, filter_expression))
  ```

  **Nested Values**

  Filters on nested attributes work as well:

  ```python
  scan_filter = (
      (MyModel.map_attr.key == "value")
      & (MyModel.list_attr[3] == 10)
  )

  results = my_table.scan(scan_filter)
  ```

  **Updating Items**

  A syntax is also available for updating items, with an optional condition expression:

  ```python
  update_expression = (
      MyModel.an_attr.set(5 - MyModel.another_attr)
      & MyModel.third_attr.add(100)
      & MyModel.another_attr.remove()
      & MyModel.set_attr.delete([2, 3])
  )

  condition_expression = MyModel.an_attr > 11

  updated = my_table.update_item(
      "primary_key",
      update_expression,
      condition_expression,
  )
  ```

  `if_not_exists` and `list_append` are provided as well:

  ```python
  from awstin.dynamodb import list_append

  update_expression = (
      MyModel.an_attr.set(MyModel.an_attr.if_not_exists(MyModel.another_attr))
      & MyModel.third_attr.set(list_append([1.1, 2.2], MyModel.list_attr))
  )
  ```

  `update_item` returns `None` if the condition evaluates to `False`.

  **Float and Decimal**

  Floats should be used when working with DynamoDB through `awstin`. Conversions between float and Decimal is done internally.


  **Unset Values**

  Values in a data model class that are unset, either by user instantiation or by
  retrieval from DynamoDB, are given the value `awstin.dynamodb.NOT_SET`.



  For integration testing, a context manager to create and then automatically tear-down a DynamoDB table is provided.
  The context manager waits for the table to be created/deleted before entering/exiting to avoid testing issues.
  Hashkey and sortkey info can be provided.

  ```python
  from awstin.dynamodb.testing import temporary_dynamodb_table


  with temporary_dynamodb_table(User, "hashkey_name") as table:
      item = User(
          user_id="user456",
          favorite_color="Green",
          account_age=333,
      )
      table.put_item(item)
  ```




  [![Lambda](https://img.shields.io/github/milestones/progress/k2bd/awstin/3)]((https://github.com/k2bd/awstin/milestone/3))



  Lambda handlers can be made more readable by separating event parsing from business logic.
  The `lambda_handler` decorator factory takes a parser for the triggering event and context, and returns individual values to be used in the wrapped function.
  ```python
  from awstin.awslambda import lambda_handler

  def event_parser(event, context):
      request_id = event["requestContext"]["requestId"]
      memory_limit = context["memory_limit_in_mb"]
      return request_id, memory_limit


  @lambda_handler(event_parser)
  def handle_custom_event(request_id, memory_limit):
      print(request_id)
      print(memory_limit)
  ```



  A function wrapped with `lambda_handler` is stored on the `inner` attribute of the returned function. That way, the business logic of the handler can be tested separately without having to build events.

  ```python
  @lambda_handler(my_parser)
  def my_handler(a: int, b: str):
      ...



  def test_parser():
      args = my_parser(test_event, test_context)
      assert ...

  def test_handler():
      result = my_handler.inner(1, "abc")
      assert ...
  ```








  Authorizor lambda responses can be generated with helper functions provided by `awstin.apigateway.auth`. `accept`, `reject`, `unauthorized`, and `invalid` will produce properly formatted auth lambda responses.

  ```python
  from awstin.apigateway import auth


  def auth_event_parser(event, _context):
      token = event["headers"]["AuthToken"]
      resource_arn = event["methodArn"]
      principal_id = event["requestContext"]["connectionId"]

      return token, resource_arn, principal_id


  @lambda_handler(auth_event_parser)
  def token_auth(token, resource_arn, principal_id):
      if token == "good token":
          return auth.accept(principal_id, resource_arn)
      elif token == "bad token":
          return auth.reject(principal_id, resource_arn)
      elif token == "unauthorized token":
          return auth.unauthorized()
      else:
          return auth.invalid()
  ```





  Websocket pushes can be performed with a callback URL and message:

  ```python
  from awstin.apigateway.websocket import Websocket


  Websocket("endpoint_url", "dev").send("callback_url", "message")
  ```




  [![SNS](https://img.shields.io/github/milestones/progress/k2bd/awstin/2)]((https://github.com/k2bd/awstin/milestone/2))



  SNS topics can be retrieved by name and published to with the message directly.
  This requires either the `TEST_SNS_ENDPOINT` (for integration testing) or `AWS_REGION` (for production) environment variable to be set.

  ```python
  from awstin.sns import SNSTopic


  topic = SNSTopic("topic-name")
  message_id = topic.publish("a message")
  ```

  Message attributes can be set from the kwargs of the publish:

  ```python
  topic.publish(
      "another message",
      attrib_a="a string",
      attrib_b=1234,
      attrib_c=["a", "b", False, None],
      attrib_d=b"bytes value",
  )
  ```


pkgId: 15eaf7bec1b91ba9d43333389df8c833c192ef4756fb802b6eee910dec14ae06
name: python-awswl
arch: src
version: 1.2.0
epoch: 0
release: 1
summary: A project to make it simple to add/remove ip addresses (or CIDR blocks) from an AWS Security group.
url: https://github.com/geoffreywiseman/awswl
rpm_license: Public Domain
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awswl-1.2.0-1.src.rpm
checksum_type: sha256
description:
  [![ci](https://github.com/geoffreywiseman/awswl/actions/workflows/ci.yml/badge.svg)](https://github.com/geoffreywiseman/awswl/actions/workflows/ci.yml)
  [![Downloads](https://static.pepy.tech/badge/awswl)](https://pepy.tech/project/awswl)
  [![Documentation](https://readthedocs.org/projects/awswl/badge/)](https://awswl.readthedocs.io/en/latest/)

  A small tool to make it pretty simple to add and remove ip addresses (or CIDR blocks) from an AWS security group. This acts like a sort of oversimplified VPN, where you can quickly give yourself SSH access to a project as you move about from network to network.

  This README should have enough information to get started, but you can get more information on:
  - recent changes in the [CHANGELOG](CHANGELOG.md)
  - documentation on [Read The Docs](https://awswl.readthedocs.io/en/latest/)
  - [Alternatives](docs/alternatives.md) to awswl



  This is a python tool, packaged as a python module, so you should be able to just run

  ```bash
  pip install awswl
  ```

  Of course, if you don't know what a python module is, or you don't have python and pip installed,
  you may have additional work ahead of you.

  Now that Python2 is largely a relic of the past, I'm focused on supporting Python 3 only. The current CI build is for Python 3.9+.



  If you want usage help at the command line, try:

  ```bash
  awswl --help
  ```

  There's more detailed usage documentation in the documentation, which you can read on [GitHub](docs/usage.md) or [readthedocs](https://awswl.readthedocs.io/en/latest/usage/).




  All of these require you to have AWS credentials set up in advance, stored in
  ``~/.aws/credentials``, and if you need to use a profile, you can configure it with
  ``AWS_PROFILE``. If you want to identify the security group using a command-line variable so that
  you don't have to put it into each command invocation, you can put it in ``AWSWL_SGID``.


pkgId: 8757e722ef0a96009ea7142cc6ed0da918e0e7f2d3afe6825a437816684cc940
name: python-awswrangler
arch: src
version: 3.10.1
epoch: 0
release: 1
summary: Pandas on AWS.
url: https://aws-sdk-pandas.readthedocs.io/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awswrangler-3.10.1-1.src.rpm
checksum_type: sha256
description:
  *Pandas on AWS*

  Easy integration with Athena, Glue, Redshift, Timestream, OpenSearch, Neptune, QuickSight, Chime, CloudWatchLogs, DynamoDB, EMR, SecretManager, PostgreSQL, MySQL, SQLServer and S3 (Parquet, CSV, JSON and EXCEL).

  ![AWS SDK for pandas](https://github.com/aws/aws-sdk-pandas/blob/main/docs/source/_static/logo2.png?raw=true "AWS SDK for pandas")
  ![tracker](https://d3tiqpr4kkkomd.cloudfront.net/img/pixel.png?asset=GVOYN2BOOQ573LTVIHEW)

  > An [AWS Professional Service](https://aws.amazon.com/professional-services/) open source initiative | aws-proserve-opensource@amazon.com

  [![PyPi](https://img.shields.io/pypi/v/awswrangler)](https://pypi.org/project/awswrangler/)
  [![Conda](https://img.shields.io/conda/vn/conda-forge/awswrangler)](https://anaconda.org/conda-forge/awswrangler)
  [![Python Version](https://img.shields.io/pypi/pyversions/awswrangler.svg)](https://pypi.org/project/awswrangler/)
  [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

  [![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
  ![Static Checking](https://github.com/aws/aws-sdk-pandas/workflows/Static%20Checking/badge.svg?branch=main)
  [![Documentation Status](https://readthedocs.org/projects/aws-sdk-pandas/badge/?version=latest)](https://aws-sdk-pandas.readthedocs.io/?badge=latest)

  | Source | Downloads | Installation Command |
  |--------|-----------|----------------------|
  | **[PyPi](https://pypi.org/project/awswrangler/)**  | [![PyPI Downloads](https://img.shields.io/pypi/dm/awswrangler)](https://pypi.org/project/awswrangler/) | `pip install awswrangler` |
  | **[Conda](https://anaconda.org/conda-forge/awswrangler)** | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/awswrangler.svg)](https://anaconda.org/conda-forge/awswrangler) | `conda install -c conda-forge awswrangler` |

  > ⚠️ **Starting version 3.0, optional modules must be installed explicitly:**<br>
  ➡️`pip install 'awswrangler[redshift]'`



  - [Quick Start](#quick-start)
  - [At Scale](#at-scale)
  - [Read The Docs](#read-the-docs)
  - [Getting Help](#getting-help)
  - [Logging](#logging)



  Installation command: `pip install awswrangler`

  > ⚠️ **Starting version 3.0, optional modules must be installed explicitly:**<br>
  ➡️`pip install 'awswrangler[redshift]'`

  ```py3
  import awswrangler as wr
  import pandas as pd
  from datetime import datetime

  df = pd.DataFrame({"id": [1, 2], "value": ["foo", "boo"]})


  wr.s3.to_parquet(
      df=df,
      path="s3://bucket/dataset/",
      dataset=True,
      database="my_db",
      table="my_table"
  )


  df = wr.s3.read_parquet("s3://bucket/dataset/", dataset=True)


  df = wr.athena.read_sql_query("SELECT * FROM my_table", database="my_db")


  con = wr.redshift.connect("my-glue-connection")
  df = wr.redshift.read_sql_query("SELECT * FROM external_schema.my_table", con=con)
  con.close()


  df = pd.DataFrame({
      "time": [datetime.now(), datetime.now()],
      "my_dimension": ["foo", "boo"],
      "measure": [1.0, 1.1],
  })
  rejected_records = wr.timestream.write(df,
      database="sampleDB",
      table="sampleTable",
      time_col="time",
      measure_col="measure",
      dimensions_cols=["my_dimension"],
  )


  wr.timestream.query("""
  SELECT time, measure_value::double, my_dimension
  FROM "sampleDB"."sampleTable" ORDER BY time DESC LIMIT 3
  """)

  ```


  AWS SDK for pandas can also run your workflows at scale by leveraging [Modin](https://modin.readthedocs.io/en/stable/) and [Ray](https://www.ray.io/). Both projects aim to speed up data workloads by distributing processing over a cluster of workers.

  Read our [docs](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/scale.html) or head to our latest [tutorials](https://github.com/aws/aws-sdk-pandas/tree/main/tutorials) to learn more.

  > ⚠️ **Ray is currently not available for Python 3.12. While AWS SDK for pandas supports Python 3.12, it cannot be used at scale.**



  - [**What is AWS SDK for pandas?**](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/about.html)
  - [**Install**](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html)
    - [PyPi (pip)](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#pypi-pip)
    - [Conda](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#conda)
    - [AWS Lambda Layer](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#aws-lambda-layer)
    - [AWS Glue Python Shell Jobs](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#aws-glue-python-shell-jobs)
    - [AWS Glue PySpark Jobs](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#aws-glue-pyspark-jobs)
    - [Amazon SageMaker Notebook](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#amazon-sagemaker-notebook)
    - [Amazon SageMaker Notebook Lifecycle](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#amazon-sagemaker-notebook-lifecycle)
    - [EMR](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#emr)
    - [From source](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/install.html#from-source)
  - [**At scale**](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/scale.html)
    - [Getting Started](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/scale.html#getting-started)
    - [Supported APIs](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/scale.html#supported-apis)
    - [Resources](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/scale.html#resources)
  - [**Tutorials**](https://github.com/aws/aws-sdk-pandas/tree/main/tutorials)
    - [001 - Introduction](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/001%20-%20Introduction.ipynb)
    - [002 - Sessions](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/002%20-%20Sessions.ipynb)
    - [003 - Amazon S3](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/003%20-%20Amazon%20S3.ipynb)
    - [004 - Parquet Datasets](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/004%20-%20Parquet%20Datasets.ipynb)
    - [005 - Glue Catalog](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/005%20-%20Glue%20Catalog.ipynb)
    - [006 - Amazon Athena](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/006%20-%20Amazon%20Athena.ipynb)
    - [007 - Databases (Redshift, MySQL, PostgreSQL, SQL Server and Oracle)](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/007%20-%20Redshift%2C%20MySQL%2C%20PostgreSQL%2C%20SQL%20Server%2C%20Oracle.ipynb)
    - [008 - Redshift - Copy & Unload.ipynb](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/008%20-%20Redshift%20-%20Copy%20%26%20Unload.ipynb)
    - [009 - Redshift - Append, Overwrite and Upsert](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/009%20-%20Redshift%20-%20Append%2C%20Overwrite%2C%20Upsert.ipynb)
    - [010 - Parquet Crawler](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/010%20-%20Parquet%20Crawler.ipynb)
    - [011 - CSV Datasets](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/011%20-%20CSV%20Datasets.ipynb)
    - [012 - CSV Crawler](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/012%20-%20CSV%20Crawler.ipynb)
    - [013 - Merging Datasets on S3](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/013%20-%20Merging%20Datasets%20on%20S3.ipynb)
    - [014 - Schema Evolution](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/014%20-%20Schema%20Evolution.ipynb)
    - [015 - EMR](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/015%20-%20EMR.ipynb)
    - [016 - EMR & Docker](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/016%20-%20EMR%20%26%20Docker.ipynb)
    - [017 - Partition Projection](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/017%20-%20Partition%20Projection.ipynb)
    - [018 - QuickSight](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/018%20-%20QuickSight.ipynb)
    - [019 - Athena Cache](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/019%20-%20Athena%20Cache.ipynb)
    - [020 - Spark Table Interoperability](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/020%20-%20Spark%20Table%20Interoperability.ipynb)
    - [021 - Global Configurations](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/021%20-%20Global%20Configurations.ipynb)
    - [022 - Writing Partitions Concurrently](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/022%20-%20Writing%20Partitions%20Concurrently.ipynb)
    - [023 - Flexible Partitions Filter](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/023%20-%20Flexible%20Partitions%20Filter.ipynb)
    - [024 - Athena Query Metadata](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/024%20-%20Athena%20Query%20Metadata.ipynb)
    - [025 - Redshift - Loading Parquet files with Spectrum](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/025%20-%20Redshift%20-%20Loading%20Parquet%20files%20with%20Spectrum.ipynb)
    - [026 - Amazon Timestream](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/026%20-%20Amazon%20Timestream.ipynb)
    - [027 - Amazon Timestream 2](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/027%20-%20Amazon%20Timestream%202.ipynb)
    - [028 - Amazon DynamoDB](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/028%20-%20DynamoDB.ipynb)
    - [029 - S3 Select](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/029%20-%20S3%20Select.ipynb)
    - [030 - Data Api](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/030%20-%20Data%20Api.ipynb)
    - [031 - OpenSearch](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/031%20-%20OpenSearch.ipynb)
    - [033 - Amazon Neptune](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/033%20-%20Amazon%20Neptune.ipynb)
    - [034 - Distributing Calls Using Ray](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/034%20-%20Distributing%20Calls%20using%20Ray.ipynb)
    - [035 - Distributing Calls on Ray Remote Cluster](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/035%20-%20Distributing%20Calls%20on%20Ray%20Remote%20Cluster.ipynb)
    - [037 - Glue Data Quality](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/037%20-%20Glue%20Data%20Quality.ipynb)
    - [038 - OpenSearch Serverless](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/038%20-%20OpenSearch%20Serverless.ipynb)
    - [039 - Athena Iceberg](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/039%20-%20Athena%20Iceberg.ipynb)
    - [040 - EMR Serverless](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/040%20-%20EMR%20Serverless.ipynb)
    - [041 - Apache Spark on Amazon Athena](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/041%20-%20Apache%20Spark%20on%20Amazon%20Athena.ipynb)
  - [**API Reference**](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html)
    - [Amazon S3](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-s3)
    - [AWS Glue Catalog](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#aws-glue-catalog)
    - [Amazon Athena](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-athena)
    - [Amazon Redshift](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-redshift)
    - [PostgreSQL](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#postgresql)
    - [MySQL](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#mysql)
    - [SQL Server](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#sqlserver)
    - [Oracle](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#oracle)
    - [Data API Redshift](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#data-api-redshift)
    - [Data API RDS](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#data-api-rds)
    - [OpenSearch](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#opensearch)
    - [AWS Glue Data Quality](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#aws-glue-data-quality)
    - [Amazon Neptune](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-neptune)
    - [DynamoDB](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#dynamodb)
    - [Amazon Timestream](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-timestream)
    - [Amazon EMR](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-emr)
    - [Amazon CloudWatch Logs](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-cloudwatch-logs)
    - [Amazon Chime](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-chime)
    - [Amazon QuickSight](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#amazon-quicksight)
    - [AWS STS](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#aws-sts)
    - [AWS Secrets Manager](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#aws-secrets-manager)
    - [Global Configurations](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#global-configurations)
    - [Distributed - Ray](https://aws-sdk-pandas.readthedocs.io/en/3.10.1/api.html#distributed-ray)
  - [**License**](https://github.com/aws/aws-sdk-pandas/blob/main/LICENSE.txt)
  - [**Contributing**](https://github.com/aws/aws-sdk-pandas/blob/main/CONTRIBUTING.md)



  The best way to interact with our team is through GitHub. You can open an [issue](https://github.com/aws/aws-sdk-pandas/issues/new/choose) and choose from one of our templates for bug reports, feature requests...
  You may also find help on these community resources:
  * The #aws-sdk-pandas Slack [channel](https://join.slack.com/t/aws-sdk-pandas/shared_invite/zt-sxdx38sl-E0coRfAds8WdpxXD2Nzfrg)
  * Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/awswrangler)
    and tag it with `awswrangler`
  * [Runbook](https://github.com/aws/aws-sdk-pandas/discussions/1815) for AWS SDK for pandas with Ray



  Enabling internal logging examples:

  ```py3
  import logging
  logging.basicConfig(level=logging.INFO, format="[s][s] s")
  logging.getLogger("awswrangler").setLevel(logging.DEBUG)
  logging.getLogger("botocore.credentials").setLevel(logging.CRITICAL)
  ```

  Into AWS lambda:

  ```py3
  import logging
  logging.getLogger("awswrangler").setLevel(logging.DEBUG)
  ```


pkgId: ea778c91eb19a912fa1b2f2bdc74968826301aad1ed105d8aa323d04f2bcef13
name: python-awswrangler
arch: src
version: 3.9.1
epoch: 0
release: 1
summary: Pandas on AWS.
url: https://aws-sdk-pandas.readthedocs.io/
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awswrangler-3.9.1-1.src.rpm
checksum_type: sha256
description:
  *Pandas on AWS*

  Easy integration with Athena, Glue, Redshift, Timestream, OpenSearch, Neptune, QuickSight, Chime, CloudWatchLogs, DynamoDB, EMR, SecretManager, PostgreSQL, MySQL, SQLServer and S3 (Parquet, CSV, JSON and EXCEL).

  ![AWS SDK for pandas](https://github.com/aws/aws-sdk-pandas/blob/main/docs/source/_static/logo2.png?raw=true "AWS SDK for pandas")
  ![tracker](https://d3tiqpr4kkkomd.cloudfront.net/img/pixel.png?asset=GVOYN2BOOQ573LTVIHEW)

  > An [AWS Professional Service](https://aws.amazon.com/professional-services/) open source initiative | aws-proserve-opensource@amazon.com

  [![PyPi](https://img.shields.io/pypi/v/awswrangler)](https://pypi.org/project/awswrangler/)
  [![Conda](https://img.shields.io/conda/vn/conda-forge/awswrangler)](https://anaconda.org/conda-forge/awswrangler)
  [![Python Version](https://img.shields.io/pypi/pyversions/awswrangler.svg)](https://pypi.org/project/awswrangler/)
  [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

  [![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
  ![Static Checking](https://github.com/aws/aws-sdk-pandas/workflows/Static%20Checking/badge.svg?branch=main)
  [![Documentation Status](https://readthedocs.org/projects/aws-sdk-pandas/badge/?version=latest)](https://aws-sdk-pandas.readthedocs.io/?badge=latest)

  | Source | Downloads | Installation Command |
  |--------|-----------|----------------------|
  | **[PyPi](https://pypi.org/project/awswrangler/)**  | [![PyPI Downloads](https://img.shields.io/pypi/dm/awswrangler)](https://pypi.org/project/awswrangler/) | `pip install awswrangler` |
  | **[Conda](https://anaconda.org/conda-forge/awswrangler)** | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/awswrangler.svg)](https://anaconda.org/conda-forge/awswrangler) | `conda install -c conda-forge awswrangler` |

  > ⚠️ **Starting version 3.0, optional modules must be installed explicitly:**<br>
  ➡️`pip install 'awswrangler[redshift]'`



  - [Quick Start](#quick-start)
  - [At Scale](#at-scale)
  - [Read The Docs](#read-the-docs)
  - [Getting Help](#getting-help)
  - [Logging](#logging)



  Installation command: `pip install awswrangler`

  > ⚠️ **Starting version 3.0, optional modules must be installed explicitly:**<br>
  ➡️`pip install 'awswrangler[redshift]'`

  ```py3
  import awswrangler as wr
  import pandas as pd
  from datetime import datetime

  df = pd.DataFrame({"id": [1, 2], "value": ["foo", "boo"]})


  wr.s3.to_parquet(
      df=df,
      path="s3://bucket/dataset/",
      dataset=True,
      database="my_db",
      table="my_table"
  )


  df = wr.s3.read_parquet("s3://bucket/dataset/", dataset=True)


  df = wr.athena.read_sql_query("SELECT * FROM my_table", database="my_db")


  con = wr.redshift.connect("my-glue-connection")
  df = wr.redshift.read_sql_query("SELECT * FROM external_schema.my_table", con=con)
  con.close()


  df = pd.DataFrame({
      "time": [datetime.now(), datetime.now()],
      "my_dimension": ["foo", "boo"],
      "measure": [1.0, 1.1],
  })
  rejected_records = wr.timestream.write(df,
      database="sampleDB",
      table="sampleTable",
      time_col="time",
      measure_col="measure",
      dimensions_cols=["my_dimension"],
  )


  wr.timestream.query("""
  SELECT time, measure_value::double, my_dimension
  FROM "sampleDB"."sampleTable" ORDER BY time DESC LIMIT 3
  """)

  ```


  AWS SDK for pandas can also run your workflows at scale by leveraging [Modin](https://modin.readthedocs.io/en/stable/) and [Ray](https://www.ray.io/). Both projects aim to speed up data workloads by distributing processing over a cluster of workers.

  Read our [docs](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/scale.html) or head to our latest [tutorials](https://github.com/aws/aws-sdk-pandas/tree/main/tutorials) to learn more.

  > ⚠️ **Ray is currently not available for Python 3.12. While AWS SDK for pandas supports Python 3.12, it cannot be used at scale.**



  - [**What is AWS SDK for pandas?**](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/about.html)
  - [**Install**](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html)
    - [PyPi (pip)](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#pypi-pip)
    - [Conda](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#conda)
    - [AWS Lambda Layer](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#aws-lambda-layer)
    - [AWS Glue Python Shell Jobs](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#aws-glue-python-shell-jobs)
    - [AWS Glue PySpark Jobs](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#aws-glue-pyspark-jobs)
    - [Amazon SageMaker Notebook](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#amazon-sagemaker-notebook)
    - [Amazon SageMaker Notebook Lifecycle](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#amazon-sagemaker-notebook-lifecycle)
    - [EMR](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#emr)
    - [From source](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/install.html#from-source)
  - [**At scale**](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/scale.html)
    - [Getting Started](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/scale.html#getting-started)
    - [Supported APIs](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/scale.html#supported-apis)
    - [Resources](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/scale.html#resources)
  - [**Tutorials**](https://github.com/aws/aws-sdk-pandas/tree/main/tutorials)
    - [001 - Introduction](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/001%20-%20Introduction.ipynb)
    - [002 - Sessions](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/002%20-%20Sessions.ipynb)
    - [003 - Amazon S3](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/003%20-%20Amazon%20S3.ipynb)
    - [004 - Parquet Datasets](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/004%20-%20Parquet%20Datasets.ipynb)
    - [005 - Glue Catalog](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/005%20-%20Glue%20Catalog.ipynb)
    - [006 - Amazon Athena](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/006%20-%20Amazon%20Athena.ipynb)
    - [007 - Databases (Redshift, MySQL, PostgreSQL, SQL Server and Oracle)](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/007%20-%20Redshift%2C%20MySQL%2C%20PostgreSQL%2C%20SQL%20Server%2C%20Oracle.ipynb)
    - [008 - Redshift - Copy & Unload.ipynb](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/008%20-%20Redshift%20-%20Copy%20%26%20Unload.ipynb)
    - [009 - Redshift - Append, Overwrite and Upsert](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/009%20-%20Redshift%20-%20Append%2C%20Overwrite%2C%20Upsert.ipynb)
    - [010 - Parquet Crawler](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/010%20-%20Parquet%20Crawler.ipynb)
    - [011 - CSV Datasets](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/011%20-%20CSV%20Datasets.ipynb)
    - [012 - CSV Crawler](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/012%20-%20CSV%20Crawler.ipynb)
    - [013 - Merging Datasets on S3](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/013%20-%20Merging%20Datasets%20on%20S3.ipynb)
    - [014 - Schema Evolution](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/014%20-%20Schema%20Evolution.ipynb)
    - [015 - EMR](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/015%20-%20EMR.ipynb)
    - [016 - EMR & Docker](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/016%20-%20EMR%20%26%20Docker.ipynb)
    - [017 - Partition Projection](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/017%20-%20Partition%20Projection.ipynb)
    - [018 - QuickSight](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/018%20-%20QuickSight.ipynb)
    - [019 - Athena Cache](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/019%20-%20Athena%20Cache.ipynb)
    - [020 - Spark Table Interoperability](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/020%20-%20Spark%20Table%20Interoperability.ipynb)
    - [021 - Global Configurations](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/021%20-%20Global%20Configurations.ipynb)
    - [022 - Writing Partitions Concurrently](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/022%20-%20Writing%20Partitions%20Concurrently.ipynb)
    - [023 - Flexible Partitions Filter](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/023%20-%20Flexible%20Partitions%20Filter.ipynb)
    - [024 - Athena Query Metadata](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/024%20-%20Athena%20Query%20Metadata.ipynb)
    - [025 - Redshift - Loading Parquet files with Spectrum](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/025%20-%20Redshift%20-%20Loading%20Parquet%20files%20with%20Spectrum.ipynb)
    - [026 - Amazon Timestream](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/026%20-%20Amazon%20Timestream.ipynb)
    - [027 - Amazon Timestream 2](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/027%20-%20Amazon%20Timestream%202.ipynb)
    - [028 - Amazon DynamoDB](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/028%20-%20DynamoDB.ipynb)
    - [029 - S3 Select](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/029%20-%20S3%20Select.ipynb)
    - [030 - Data Api](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/030%20-%20Data%20Api.ipynb)
    - [031 - OpenSearch](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/031%20-%20OpenSearch.ipynb)
    - [033 - Amazon Neptune](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/033%20-%20Amazon%20Neptune.ipynb)
    - [034 - Distributing Calls Using Ray](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/034%20-%20Distributing%20Calls%20using%20Ray.ipynb)
    - [035 - Distributing Calls on Ray Remote Cluster](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/035%20-%20Distributing%20Calls%20on%20Ray%20Remote%20Cluster.ipynb)
    - [037 - Glue Data Quality](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/037%20-%20Glue%20Data%20Quality.ipynb)
    - [038 - OpenSearch Serverless](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/038%20-%20OpenSearch%20Serverless.ipynb)
    - [039 - Athena Iceberg](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/039%20-%20Athena%20Iceberg.ipynb)
    - [040 - EMR Serverless](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/040%20-%20EMR%20Serverless.ipynb)
    - [041 - Apache Spark on Amazon Athena](https://github.com/aws/aws-sdk-pandas/blob/main/tutorials/041%20-%20Apache%20Spark%20on%20Amazon%20Athena.ipynb)
  - [**API Reference**](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html)
    - [Amazon S3](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-s3)
    - [AWS Glue Catalog](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#aws-glue-catalog)
    - [Amazon Athena](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-athena)
    - [Amazon Redshift](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-redshift)
    - [PostgreSQL](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#postgresql)
    - [MySQL](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#mysql)
    - [SQL Server](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#sqlserver)
    - [Oracle](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#oracle)
    - [Data API Redshift](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#data-api-redshift)
    - [Data API RDS](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#data-api-rds)
    - [OpenSearch](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#opensearch)
    - [AWS Glue Data Quality](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#aws-glue-data-quality)
    - [Amazon Neptune](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-neptune)
    - [DynamoDB](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#dynamodb)
    - [Amazon Timestream](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-timestream)
    - [Amazon EMR](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-emr)
    - [Amazon CloudWatch Logs](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-cloudwatch-logs)
    - [Amazon Chime](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-chime)
    - [Amazon QuickSight](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#amazon-quicksight)
    - [AWS STS](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#aws-sts)
    - [AWS Secrets Manager](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#aws-secrets-manager)
    - [Global Configurations](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#global-configurations)
    - [Distributed - Ray](https://aws-sdk-pandas.readthedocs.io/en/3.9.1/api.html#distributed-ray)
  - [**License**](https://github.com/aws/aws-sdk-pandas/blob/main/LICENSE.txt)
  - [**Contributing**](https://github.com/aws/aws-sdk-pandas/blob/main/CONTRIBUTING.md)



  The best way to interact with our team is through GitHub. You can open an [issue](https://github.com/aws/aws-sdk-pandas/issues/new/choose) and choose from one of our templates for bug reports, feature requests...
  You may also find help on these community resources:
  * The #aws-sdk-pandas Slack [channel](https://join.slack.com/t/aws-sdk-pandas/shared_invite/zt-sxdx38sl-E0coRfAds8WdpxXD2Nzfrg)
  * Ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/awswrangler)
    and tag it with `awswrangler`
  * [Runbook](https://github.com/aws/aws-sdk-pandas/discussions/1815) for AWS SDK for pandas with Ray



  Enabling internal logging examples:

  ```py3
  import logging
  logging.basicConfig(level=logging.INFO, format="[s][s] s")
  logging.getLogger("awswrangler").setLevel(logging.DEBUG)
  logging.getLogger("botocore.credentials").setLevel(logging.CRITICAL)
  ```

  Into AWS lambda:

  ```py3
  import logging
  logging.getLogger("awswrangler").setLevel(logging.DEBUG)
  ```


pkgId: 4c2d0e65bc1bf91086aa6b33bc4220903a3d7ea6a75cf89430dded3c609682e9
name: python-awsync
arch: src
version: 0.4.5
epoch: 0
release: 1
url: https://github.com/JKCT/awsync
rpm_license: Apache-2.0
rpm_group: Unspecified
rpm_buildhost: localhost
location_href: Packages/python-awsync-0.4.5-1.src.rpm
checksum_type: sha256
summary:
  An asynchronous, fully-typed AWS API library with a focus on being understandable, reliable, and maintainable.

description:
  ![CICD](https://github.com/JKCT/awsync/actions/workflows/cicd.yaml/badge.svg)

  An asynchronous, fully-typed AWS API library with a focus on being understandable, reliable, and maintainable.



  📖 Read [the documentation](https://jkct.github.io/awsync/)!

  **NOTE: Currently a work in progress!**
  Only a few API methods currently implemented for testing and development.



  ```python
  "Module main."
  from asyncio import run
  from httpx import AsyncClient

  from awsync.client import Client
  from awsync.models.aws import Region, Credentials


  async def main() -> int:
      "Main function."
      async with AsyncClient() as httpx_client:
          client = Client(
              credentials=Credentials.from_environment(),
              httpx_client=httpx_client,
          )
          response = await client.list_stack_resources(
              region=Region.us_east_1, stack_name="Example-Stack-Name"
          )
          print(response)
      return 0


  if __name__ == "__main__":
      run(main())
  ```



  Requirements:

  - [mise](https://mise.jdx.dev/)
  - [python](https://www.python.org/) 3.8 or greater
  - [poetry](https://python-poetry.org/)

  [Install mise](https://mise.jdx.dev/getting-started.html) then run `mise run init` to setup python, poetry, and install dependencies.



  This repository uses [mise](https://mise.jdx.dev/) for tool and task management.

  List all available commands with `mise tasks`.

  Run all pull request checks locally with `mise run pr`



  This repository uses [poetry](https://python-poetry.org/) for python package management.

  - `poetry install --sync` install/update dependencies.
  - `poetry add` add a dependency ie. `poetry add black`.
  - `poetry add -D` add a development dependency ie. `poetry add -D black`.
  - `poetry remove` remove a dependency ie. `poetry remove black`.
  - `poetry shell` activate the python virtual environment for access to installed packages.
  - `exit` exit the python virtual environment.


