v2_aws_integration_CreateAWSAccount_1716720881/
v2_aws-integration_CreateAWSAccount_1716720881.rs

1// Create an AWS account returns "AWS Account object" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_aws_integration::AWSIntegrationAPI;
4use datadog_api_client::datadogV2::model::AWSAccountCreateRequest;
5use datadog_api_client::datadogV2::model::AWSAccountCreateRequestAttributes;
6use datadog_api_client::datadogV2::model::AWSAccountCreateRequestData;
7use datadog_api_client::datadogV2::model::AWSAccountPartition;
8use datadog_api_client::datadogV2::model::AWSAccountType;
9use datadog_api_client::datadogV2::model::AWSAuthConfig;
10use datadog_api_client::datadogV2::model::AWSAuthConfigRole;
11use datadog_api_client::datadogV2::model::AWSLambdaForwarderConfig;
12use datadog_api_client::datadogV2::model::AWSLambdaForwarderConfigLogSourceConfig;
13use datadog_api_client::datadogV2::model::AWSLogSourceTagFilter;
14use datadog_api_client::datadogV2::model::AWSLogsConfig;
15use datadog_api_client::datadogV2::model::AWSMetricsConfig;
16use datadog_api_client::datadogV2::model::AWSNamespaceTagFilter;
17use datadog_api_client::datadogV2::model::AWSResourcesConfig;
18use datadog_api_client::datadogV2::model::AWSTracesConfig;
19
20#[tokio::main]
21async fn main() {
22    let body = AWSAccountCreateRequest::new(AWSAccountCreateRequestData::new(
23        AWSAccountCreateRequestAttributes::new(
24            AWSAuthConfig::AWSAuthConfigRole(Box::new(AWSAuthConfigRole::new(
25                "DatadogIntegrationRole".to_string(),
26            ))),
27            "123456789012".to_string(),
28            AWSAccountPartition::AWS,
29        )
30        .account_tags(Some(vec!["key:value".to_string()]))
31        .logs_config(
32            AWSLogsConfig::new().lambda_forwarder(
33                AWSLambdaForwarderConfig::new()
34                    .lambdas(vec![
35                        "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder"
36                            .to_string(),
37                    ])
38                    .log_source_config(AWSLambdaForwarderConfigLogSourceConfig::new().tag_filters(
39                        vec![
40                                            AWSLogSourceTagFilter::new()
41                                                .source("s3".to_string())
42                                                .tags(Some(vec!["test:test".to_string()]))
43                                        ],
44                    ))
45                    .sources(vec!["s3".to_string()]),
46            ),
47        )
48        .metrics_config(
49            AWSMetricsConfig::new()
50                .automute_enabled(true)
51                .collect_cloudwatch_alarms(true)
52                .collect_custom_metrics(true)
53                .enabled(true)
54                .tag_filters(vec![AWSNamespaceTagFilter::new()
55                    .namespace("AWS/EC2".to_string())
56                    .tags(Some(vec!["key:value".to_string()]))]),
57        )
58        .resources_config(
59            AWSResourcesConfig::new()
60                .cloud_security_posture_management_collection(false)
61                .extended_collection(false),
62        )
63        .traces_config(AWSTracesConfig::new()),
64        AWSAccountType::ACCOUNT,
65    ));
66    let configuration = datadog::Configuration::new();
67    let api = AWSIntegrationAPI::with_config(configuration);
68    let resp = api.create_aws_account(body).await;
69    if let Ok(value) = resp {
70        println!("{:#?}", value);
71    } else {
72        println!("{:#?}", resp.unwrap_err());
73    }
74}