簡體   English   中英

在 AWS 中使用 Amazon Appflow 移動數據

[英]Using Amazon Appflow in AWS to move data

我在 AWS 工作,我主要使用 terraform 做很多事情。 我想實施 Amazon Appflow 並能夠將數據從 salesforce 移動到 S3 存儲桶。 AppFlow 是一個向導,需要逐步設置。

我會假設你不能使用 Terraform 來實現這個對嗎? 這種想法對嗎?

是的,您可以使用 Terraform 部署 AppFliw 資源。 您可以使用兩個提供程序。 AWS 提供商或 AWS Cloud Control 提供商。 我目前對 AWS Cloud Control 比較幸運,因為它旨在更快地支持新資源。 它支持連接器、配置文件和流以及支持自定義連接器。 AWS 提供商僅支持 Connectos 和配置文件(無流)。 我還發現它還沒有很好地支持自定義連接器。

現在我推薦 Cloud Control

這是一個很好的介紹。

https://www.hashicorp.com/resources/using-the-terraform-aws-cloud-control-provider

以及 AWS Cloud Control 提供商。

https://registry.terraform.io/providers/hashicorp/awscc/latest/docs/resources/appflow_connector

這里是 AWS Provider AppFlow 資源。

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appflow_connector_profile

resource "aws_s3_bucket" "example_source" {
  bucket = "example_source"
}

resource "aws_s3_bucket_policy" "example_source" {
  bucket = aws_s3_bucket.example_source.id
  policy = <<EOF
{
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "AllowAppFlowSourceActions",
            "Principal": {
                "Service": "appflow.amazonaws.com"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::example_source",
                "arn:aws:s3:::example_source/*"
            ]
        }
    ],
    "Version": "2012-10-17"
}
EOF
}

resource "aws_s3_object" "example" {
  bucket = aws_s3_bucket.example_source.id
  key    = "example_source.csv"
  source = "example_source.csv"
}

resource "aws_s3_bucket" "example_destination" {
  bucket = "example_destination"
}

resource "aws_s3_bucket_policy" "example_destination" {
  bucket = aws_s3_bucket.example_destination.id
  policy = <<EOF

{
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "AllowAppFlowDestinationActions",
            "Principal": {
                "Service": "appflow.amazonaws.com"
            },
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts",
                "s3:ListBucketMultipartUploads",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::example_destination",
                "arn:aws:s3:::example_destination/*"
            ]
        }
    ],
    "Version": "2012-10-17"
}
EOF
}

resource "aws_appflow_flow" "example" {
  name = "example"

  source_flow_config {
    connector_type = "S3"
    source_connector_properties {
      s3 {
        bucket_name   = aws_s3_bucket_policy.example_source.bucket
        bucket_prefix = "example"
      }
    }
  }

  destination_flow_config {
    connector_type = "S3"
    destination_connector_properties {
      s3 {
        bucket_name = aws_s3_bucket_policy.example_destination.bucket

        s3_output_format_config {
          prefix_config {
            prefix_type = "PATH"
          }
        }
      }
    }
  }

  task {
    source_fields     = ["exampleField"]
    destination_field = "exampleField"
    task_type         = "Map"

    connector_operator {
      s3 = "NO_OP"
    }
  }

  trigger_config {
    trigger_type = "OnDemand"
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM