AWS on-premise
Port's AWS on-premise integration allows you to import your AWS resources into Port, according to your configuration.
After the initial import of data, the integration will also listen to live events from AWS to update data in Port in real time.
The integration with AWS supports real-time event processing, which allows for an accurate real-time representation of your AWS infrastructure inside Port.
Port's AWS integration is open source, view the source code here.
๐ก AWS on-premise integration common use casesโ
Easily fill your software catalog with data directly from your AWS Organization, for example:
- Map all the resources in your AWS Accounts, including ECS Clusters, S3 Buckets, EC2 Instances and other AWS objects.
- Watch for AWS resources changes (create/update/delete) in real-time, and automatically apply the changes to your entities in Port.
- Use relations to create complete, easily digestible views of your AWS infrastructure inside Port.
How it worksโ
Port's AWS integration can retrieve all the resources supported by the Cloud Control API, and export them to Port as entities of existing blueprints.
The AWS integration allows you to perform extract, transform, load (ETL) on data from the Cloud Control API into the desired software catalog data model.
Getting startedโ
Continue to the installation guide to learn how to install the AWS on-premise integration.
Multiple accounts supportโ
To properly configure permissions for production and to enable multiple accounts collection check out our multiple accounts guide
Configurationโ
Port integrations use a YAML mapping block to ingest data from the third-party api into Port.
The mapping makes use of the JQ JSON processor to select, modify, concatenate, transform and perform other operations on existing fields and values from the integration API.
Default mapping configurationโ
This is the default mapping configuration you get after installing the AWS on-premise integration.
Default mapping configuration (Click to expand)
resources:
- kind: AWS::Organizations::Account
  selector:
    query: 'true'
  port:
    entity:
      mappings:
        identifier: .Id
        title: .Name
        blueprint: '"awsAccount"'
        properties:
          arn: .Arn
          email: .Email
          status: .Status
          joined_method: .JoinedMethod
          joined_timestamp: .JoinedTimestamp | sub(" "; "T")
- kind: AWS::S3::Bucket
  selector:
    query: 'true'
    useGetResourceAPI: 'true'
  port:
    entity:
      mappings:
        identifier: .Identifier
        title: .Identifier
        blueprint: '"cloudResource"'
        properties:
          kind: .__Kind
          region: .Properties.RegionalDomainName | capture(".*\\.(?<region>[^\\.]+)\\.amazonaws\\.com")
            | .region
          tags: .Properties.Tags
          arn: .Properties.Arn
          link: .Properties | select(.Arn != null) | "https://console.aws.amazon.com/go/view?arn="
            + .Arn
        relations:
          account: .__AccountId
- kind: AWS::EC2::Instance
  selector:
    query: 'true'
  port:
    entity:
      mappings:
        identifier: .Identifier
        title: .Identifier
        blueprint: '"cloudResource"'
        properties:
          kind: .__Kind
          region: .__Region
          tags: .Properties.Tags
          arn: .Properties.Arn
          link: .Properties | select(.Arn != null) | "https://console.aws.amazon.com/go/view?arn="
            + .Arn
        relations:
          account: .__AccountId
- kind: AWS::ECS::Cluster
  selector:
    query: 'true'
    useGetResourceAPI: 'true'
  port:
    entity:
      mappings:
        identifier: .Properties.Arn
        title: .Identifier
        blueprint: '"cloudResource"'
        properties:
          kind: .__Kind
          region: .__Region
          tags: .Properties.Tags
          arn: .Properties.Arn
          link: .Properties | select(.Arn != null) | "https://console.aws.amazon.com/go/view?arn="
            + .Arn
        relations:
          account: .__AccountId
Monitoring and sync statusโ
To learn more about how to monitor and check the sync status of your integration, see the relevant documentation.