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::AWSLogsConfig;
13use datadog_api_client::datadogV2::model::AWSMetricsConfig;
14use datadog_api_client::datadogV2::model::AWSNamespaceTagFilter;
15use datadog_api_client::datadogV2::model::AWSResourcesConfig;
16use datadog_api_client::datadogV2::model::AWSTracesConfig;
17
18#[tokio::main]
19async fn main() {
20    let body = AWSAccountCreateRequest::new(AWSAccountCreateRequestData::new(
21        AWSAccountCreateRequestAttributes::new(
22            AWSAuthConfig::AWSAuthConfigKeys(Box::new(
23                AWSAuthConfigKeys::new("AKIAIOSFODNN7EXAMPLE".to_string())
24                    .secret_access_key("wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY".to_string()),
25            )),
26            "123456789012".to_string(),
27            AWSAccountPartition::AWS,
28        )
29        .account_tags(Some(vec!["key:value".to_string()]))
30        .logs_config(
31            AWSLogsConfig::new().lambda_forwarder(
32                AWSLambdaForwarderConfig::new()
33                    .lambdas(vec![
34                        "arn:aws:lambda:us-east-1:123456789012:function:DatadogLambdaLogForwarder"
35                            .to_string(),
36                    ])
37                    .sources(vec!["s3".to_string()]),
38            ),
39        )
40        .metrics_config(
41            AWSMetricsConfig::new()
42                .automute_enabled(true)
43                .collect_cloudwatch_alarms(true)
44                .collect_custom_metrics(true)
45                .enabled(true)
46                .tag_filters(vec![AWSNamespaceTagFilter::new()
47                    .namespace("AWS/EC2".to_string())
48                    .tags(Some(vec!["key:value".to_string()]))]),
49        )
50        .resources_config(
51            AWSResourcesConfig::new()
52                .cloud_security_posture_management_collection(false)
53                .extended_collection(false),
54        )
55        .traces_config(AWSTracesConfig::new()),
56        AWSAccountType::ACCOUNT,
57    ));
58    let mut configuration = datadog::Configuration::new();
59    configuration.set_unstable_operation_enabled("v2.CreateAWSAccount", true);
60    let api = AWSIntegrationAPI::with_config(configuration);
61    let resp = api.create_aws_account(body).await;
62    if let Ok(value) = resp {
63        println!("{:#?}", value);
64    } else {
65        println!("{:#?}", resp.unwrap_err());
66    }
67}