v2_aws_integration_CreateAWSAccount/
v2_aws-integration_CreateAWSAccount.rs

1// Create an AWS integration 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::AWSAuthConfigKeys;
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::AWSAuthConfigKeys(Box::new(
25                AWSAuthConfigKeys::new("AKIAIOSFODNN7EXAMPLE".to_string())
26                    .secret_access_key("wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY".to_string()),
27            )),
28            "123456789012".to_string(),
29            AWSAccountPartition::AWS,
30        )
31        .account_tags(Some(vec!["key:value".to_string()]))
32        .logs_config(
33            AWSLogsConfig::new().lambda_forwarder(
34                AWSLambdaForwarderConfig::new()
35                    .lambdas(vec![
36                        "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder"
37                            .to_string(),
38                    ])
39                    .log_source_config(AWSLambdaForwarderConfigLogSourceConfig::new().tag_filters(
40                        vec![
41                                            AWSLogSourceTagFilter::new()
42                                                .source("s3".to_string())
43                                                .tags(Some(vec!["test:test".to_string()]))
44                                        ],
45                    ))
46                    .sources(vec!["s3".to_string()]),
47            ),
48        )
49        .metrics_config(
50            AWSMetricsConfig::new()
51                .automute_enabled(true)
52                .collect_cloudwatch_alarms(true)
53                .collect_custom_metrics(true)
54                .enabled(true)
55                .tag_filters(vec![AWSNamespaceTagFilter::new()
56                    .namespace("AWS/EC2".to_string())
57                    .tags(Some(vec!["key:value".to_string()]))]),
58        )
59        .resources_config(
60            AWSResourcesConfig::new()
61                .cloud_security_posture_management_collection(false)
62                .extended_collection(false),
63        )
64        .traces_config(AWSTracesConfig::new()),
65        AWSAccountType::ACCOUNT,
66    ));
67    let configuration = datadog::Configuration::new();
68    let api = AWSIntegrationAPI::with_config(configuration);
69    let resp = api.create_aws_account(body).await;
70    if let Ok(value) = resp {
71        println!("{:#?}", value);
72    } else {
73        println!("{:#?}", resp.unwrap_err());
74    }
75}