Redrive Policy
    Allows you to set a redrive policy of an SQS Queue while referencing ARN of the dead letter queue inside the redrive policy. This is useful when you want to set a dedicated dead letter queue for a standard or FIFO queue, but need the dead letter queue to exist before setting the redrive policy.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const q = new aws.sqs.Queue("q", {name: "examplequeue"});
const ddl = new aws.sqs.Queue("ddl", {
    name: "examplequeue-ddl",
    redriveAllowPolicy: pulumi.jsonStringify({
        redrivePermission: "byQueue",
        sourceQueueArns: [q.arn],
    }),
});
const qRedrivePolicy = new aws.sqs.RedrivePolicy("q", {
    queueUrl: q.id,
    redrivePolicy: pulumi.jsonStringify({
        deadLetterTargetArn: ddl.arn,
        maxReceiveCount: 4,
    }),
});Content copied to clipboard
import pulumi
import json
import pulumi_aws as aws
q = aws.sqs.Queue("q", name="examplequeue")
ddl = aws.sqs.Queue("ddl",
    name="examplequeue-ddl",
    redrive_allow_policy=pulumi.Output.json_dumps({
        "redrivePermission": "byQueue",
        "sourceQueueArns": [q.arn],
    }))
q_redrive_policy = aws.sqs.RedrivePolicy("q",
    queue_url=q.id,
    redrive_policy=pulumi.Output.json_dumps({
        "deadLetterTargetArn": ddl.arn,
        "maxReceiveCount": 4,
    }))Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
    var q = new Aws.Sqs.Queue("q", new()
    {
        Name = "examplequeue",
    });
    var ddl = new Aws.Sqs.Queue("ddl", new()
    {
        Name = "examplequeue-ddl",
        RedriveAllowPolicy = Output.JsonSerialize(Output.Create(new Dictionary<string, object?>
        {
            ["redrivePermission"] = "byQueue",
            ["sourceQueueArns"] = new[]
            {
                q.Arn,
            },
        })),
    });
    var qRedrivePolicy = new Aws.Sqs.RedrivePolicy("q", new()
    {
        QueueUrl = q.Id,
        RedrivePolicyName = Output.JsonSerialize(Output.Create(new Dictionary<string, object?>
        {
            ["deadLetterTargetArn"] = ddl.Arn,
            ["maxReceiveCount"] = 4,
        })),
    });
});Content copied to clipboard
package main
import (
	"encoding/json"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sqs"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		q, err := sqs.NewQueue(ctx, "q", &sqs.QueueArgs{
			Name: pulumi.String("examplequeue"),
		})
		if err != nil {
			return err
		}
		ddl, err := sqs.NewQueue(ctx, "ddl", &sqs.QueueArgs{
			Name: pulumi.String("examplequeue-ddl"),
			RedriveAllowPolicy: q.Arn.ApplyT(func(arn string) (pulumi.String, error) {
				var _zero pulumi.String
				tmpJSON0, err := json.Marshal(map[string]interface{}{
					"redrivePermission": "byQueue",
					"sourceQueueArns": []string{
						arn,
					},
				})
				if err != nil {
					return _zero, err
				}
				json0 := string(tmpJSON0)
				return pulumi.String(json0), nil
			}).(pulumi.StringOutput),
		})
		if err != nil {
			return err
		}
		_, err = sqs.NewRedrivePolicy(ctx, "q", &sqs.RedrivePolicyArgs{
			QueueUrl: q.ID(),
			RedrivePolicy: ddl.Arn.ApplyT(func(arn string) (pulumi.String, error) {
				var _zero pulumi.String
				tmpJSON1, err := json.Marshal(map[string]interface{}{
					"deadLetterTargetArn": arn,
					"maxReceiveCount":     4,
				})
				if err != nil {
					return _zero, err
				}
				json1 := string(tmpJSON1)
				return pulumi.String(json1), nil
			}).(pulumi.StringOutput),
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.sqs.Queue;
import com.pulumi.aws.sqs.QueueArgs;
import com.pulumi.aws.sqs.RedrivePolicy;
import com.pulumi.aws.sqs.RedrivePolicyArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var q = new Queue("q", QueueArgs.builder()
            .name("examplequeue")
            .build());
        var ddl = new Queue("ddl", QueueArgs.builder()
            .name("examplequeue-ddl")
            .redriveAllowPolicy(q.arn().applyValue(arn -> serializeJson(
                jsonObject(
                    jsonProperty("redrivePermission", "byQueue"),
                    jsonProperty("sourceQueueArns", jsonArray(arn))
                ))))
            .build());
        var qRedrivePolicy = new RedrivePolicy("qRedrivePolicy", RedrivePolicyArgs.builder()
            .queueUrl(q.id())
            .redrivePolicy(ddl.arn().applyValue(arn -> serializeJson(
                jsonObject(
                    jsonProperty("deadLetterTargetArn", arn),
                    jsonProperty("maxReceiveCount", 4)
                ))))
            .build());
    }
}Content copied to clipboard
resources:
  q:
    type: aws:sqs:Queue
    properties:
      name: examplequeue
  ddl:
    type: aws:sqs:Queue
    properties:
      name: examplequeue-ddl
      redriveAllowPolicy:
        fn::toJSON:
          redrivePermission: byQueue
          sourceQueueArns:
            - ${q.arn}
  qRedrivePolicy:
    type: aws:sqs:RedrivePolicy
    name: q
    properties:
      queueUrl: ${q.id}
      redrivePolicy:
        fn::toJSON:
          deadLetterTargetArn: ${ddl.arn}
          maxReceiveCount: 4Content copied to clipboard
Import
Using pulumi import, import SQS Queue Redrive Policies using the queue URL. For example:
$ pulumi import aws:sqs/redrivePolicy:RedrivePolicy test https://queue.amazonaws.com/0123456789012/myqueueContent copied to clipboard
Properties
Link copied to clipboard
                The JSON redrive policy for the SQS queue. Accepts two key/val pairs: deadLetterTargetArn and maxReceiveCount. Learn more in the Amazon SQS dead-letter queues documentation.