

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Akses jarak jauh di AWS Device Farm
<a name="remote-access"></a>

 Akses jarak jauh memungkinkan Anda untuk menggesek, memberi isyarat, dan berinteraksi dengan perangkat melalui browser web Anda secara real time untuk menguji fungsionalitas dan mereproduksi masalah pelanggan. Anda berinteraksi dengan perangkat tertentu dengan membuat sesi akses jarak jauh dengan perangkat tersebut.

Sesi di Device Farm adalah interaksi real-time dengan perangkat fisik aktual yang dihosting di browser web. Sesi menampilkan perangkat tunggal yang Anda pilih saat memulai sesi. Seorang pengguna dapat memulai lebih dari satu sesi pada satu waktu dengan jumlah total perangkat simultan dibatasi oleh jumlah slot perangkat yang Anda miliki. Anda dapat membeli slot perangkat berdasarkan keluarga perangkat (perangkat Android atau iOS). Untuk informasi selengkapnya, lihat [Harga Device Farm](https://aws.amazon.com/device-farm/pricing/). 

Device Farm saat ini menawarkan subset perangkat untuk pengujian akses jarak jauh. Perangkat baru ditambahkan ke kumpulan perangkat setiap saat.

Device Farm menangkap video dari setiap sesi akses jarak jauh dan menghasilkan log aktivitas selama sesi berlangsung. Hasil ini mencakup informasi apa pun yang Anda berikan selama sesi.

**catatan**  
Untuk alasan keamanan, kami menyarankan Anda menghindari memberikan atau memasukkan informasi sensitif, seperti nomor akun, informasi login pribadi, dan detail lainnya selama sesi akses jarak jauh. Jika memungkinkan, gunakan alternatif yang dikembangkan khusus untuk pengujian, seperti akun uji.

**Topics**
+ [Membuat sesi akses jarak jauh di AWS Device Farm](how-to-create-session.md)
+ [Menggunakan sesi akses jarak jauh di AWS Device Farm](how-to-use-session.md)
+ [Mengambil hasil sesi akses jarak jauh di AWS Device Farm](how-to-access-session-results.md)

# Membuat sesi akses jarak jauh di AWS Device Farm
<a name="how-to-create-session"></a>

Untuk informasi tentang sesi akses jarak jauh, lihat[Sesi](sessions.md).
+ [Prasyarat](#how-to-create-session-prerequisites)
+ [Buat sesi jarak jauh](#how-to-create-remote-session)
+ [Langkah selanjutnya](#how-to-create-session-next-steps)

## Prasyarat
<a name="how-to-create-session-prerequisites"></a>
+ Buat proyek di Device Farm. Ikuti instruksi di[Membuat proyek di AWS Device Farm](how-to-create-project.md), dan kemudian kembali ke halaman ini.

## Buat sesi jarak jauh
<a name="how-to-create-remote-session"></a>

------
#### [ Console ]

1. Masuk ke konsol Device Farm di [https://console.aws.amazon.com/devicefarm](https://console.aws.amazon.com/devicefarm).

1. Pada panel navigasi Device Farm, pilih **Pengujian Perangkat Seluler**, lalu pilih **Proyek**.

1. Jika Anda sudah memiliki proyek, pilih dari daftar. Jika tidak, buat proyek dengan mengikuti instruksi di[Membuat proyek di AWS Device Farm](how-to-create-project.md).

1. Pada tab **Akses jarak jauh**, pilih **Buat sesi akses jarak jauh**.

1. Pilih perangkat untuk sesi Anda. Anda dapat memilih dari daftar perangkat yang tersedia atau mencari perangkat menggunakan bilah pencarian di bagian atas daftar.

1. *(Opsional)* Sertakan aplikasi dan aplikasi tambahan sebagai bagian dari sesi. Ini dapat berupa aplikasi yang baru diunggah, atau aplikasi yang sebelumnya diunggah dalam proyek ini dari 30 hari terakhir (setelah 30 hari, unggahan aplikasi [akan](data-protection.md#data-protection-retention) kedaluwarsa).

1. Dalam **nama Sesi**, masukkan nama untuk sesi tersebut.

1. Pilih **Konfirmasi dan mulai sesi**.

------
#### [ AWS CLI ]

*Catatan: petunjuk ini hanya berfokus pada pembuatan sesi akses jarak jauh. Untuk petunjuk tentang cara mengunggah aplikasi untuk digunakan selama sesi Anda, silakan lihat [mengotomatiskan unggahan aplikasi](api-ref.md#upload-example).*

Pertama, verifikasi bahwa versi AWS CLI Anda adalah up-to-date dengan [mengunduh dan menginstal versi terbaru](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**penting**  
Perintah tertentu yang disebutkan dalam dokumen ini tidak tersedia di AWS CLI versi lama.

Kemudian, Anda dapat menentukan perangkat mana yang ingin Anda uji:

```
$ aws devicefarm list-devices
```

Ini akan menampilkan output seperti berikut:

```
{
    "devices":
    [
        {
            "arn": "arn:aws:devicefarm:us-west-2::device:DE5BD47FF3BD42C3A14BF7A6EFB1BFE7",
            "name": "Google Pixel 8",
            "remoteAccessEnabled": true,
            "availability": "HIGHLY_AVAILABLE"
            ...
        },
        ...
    ]
}
```

Kemudian, Anda dapat membuat sesi akses jarak jauh dengan perangkat ARN pilihan Anda:

```
$ aws devicefarm create-remote-access-session \
  --project-arn arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef \
  --device-arn arn:aws:devicefarm:us-west-2::device:DE5BD47FF3BD42C3A14BF7A6EFB1BFE7 \
  --app-arn arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef \
  --configuration '{
      "auxiliaryApps": [
          "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
          "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
      ]
  }'
```

Ini akan menampilkan output seperti berikut:

```
{
    "remoteAccessSession": {
        "arn": "arn:aws:devicefarm:us-west-2:111122223333:session:abcdef123456-1234-5678-abcd-abcdef123456/abcdef123456-1234-5678-abcd-abcdef123456/00000",
        "name": "Google Pixel 8",
        "status": "PENDING",
        ...
}
```

Sekarang, secara opsional, kita dapat melakukan polling dan menunggu sesi siap:

```
$ POLL_INTERVAL=3
TIMEOUT=600
DEADLINE=$(( $(date +%s) + TIMEOUT ))

while [[ "$(date +%s)" -lt "$DEADLINE" ]]; do

  STATUS=$(aws devicefarm get-remote-access-session \
    --arn "$DEVICE_FARM_SESSION_ARN" \
    --query 'remoteAccessSession.status' \
    --output text)

  case "$STATUS" in
    RUNNING)
      echo "Session is ready with status: $STATUS"
      break
      ;;
    STOPPING|COMPLETED)
      echo "Session ended early with status: $STATUS"
      exit 1
      ;;
  esac

done
```

------
#### [ Python ]

*Catatan: petunjuk ini hanya berfokus pada pembuatan sesi akses jarak jauh. Untuk petunjuk tentang cara mengunggah aplikasi untuk digunakan selama sesi Anda, silakan lihat [mengotomatiskan unggahan aplikasi](api-ref.md#upload-example).*

Contoh ini pertama-tama menemukan perangkat Google Pixel yang tersedia di Device Farm, kemudian membuat sesi akses jarak jauh dengannya dan menunggu hingga sesi berjalan.

```
import random
import time
import boto3

client = boto3.client("devicefarm", region_name="us-west-2")

# 1) Gather all matching devices via paginated ListDevices with filters
filters = [
    {"attribute": "MODEL",        "operator": "CONTAINS", "values": ["Pixel"]},
    {"attribute": "AVAILABILITY", "operator": "EQUALS",   "values": ["AVAILABLE"]},
]

matching_arns = []
next_token = None
while True:
    args = {"filters": filters}
    if next_token:
        args["nextToken"] = next_token
    page = client.list_devices(**args)
    for d in page.get("devices", []):
        matching_arns.append(d["arn"])
    next_token = page.get("nextToken")
    if not next_token:
        break

if not matching_arns:
    raise RuntimeError("No available Google Pixel device found.")

# Randomly select one device from the full matching set
device_arn = random.choice(matching_arns)
print("Selected device ARN:", device_arn)

# 2) Create remote access session and wait until RUNNING
resp = client.create_remote_access_session(
    projectArn="arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
    deviceArn=device_arn,
    appArn="arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef",  # optional
    configuration={
        "auxiliaryApps": [  # optional
            "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
            "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1",
        ]
    },
)

session_arn = resp["remoteAccessSession"]["arn"]
print(f"Created Remote Access Session: {session_arn}")

poll_interval = 3
timeout = 600
deadline = time.time() + timeout
terminal_states = ["STOPPING", "COMPLETED"]

while True:
    out = client.get_remote_access_session(arn=session_arn)
    status = out["remoteAccessSession"]["status"]
    print(f"Current status: {status}")

    if status == "RUNNING":
        print(f"Session is ready with status: {status}")
        break
    if status in terminal_states:
        raise RuntimeError(f"Session ended early with status: {status}")
    if time.time() >= deadline:
        raise RuntimeError("Timed out waiting for session to be ready.")
    time.sleep(poll_interval)
```

------
#### [ Java ]

*Catatan: petunjuk ini hanya berfokus pada pembuatan sesi akses jarak jauh. Untuk petunjuk tentang cara mengunggah aplikasi untuk digunakan selama sesi Anda, silakan lihat [mengotomatiskan unggahan aplikasi](api-ref.md#upload-example).*

*Catatan: contoh ini menggunakan AWS SDK for Java v2, dan kompatibel dengan JDK versi 11 dan yang lebih tinggi.*

Contoh ini pertama-tama menemukan perangkat Google Pixel yang tersedia di Device Farm, kemudian membuat sesi akses jarak jauh dengannya dan menunggu hingga sesi berjalan.

```
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.devicefarm.DeviceFarmClient;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionConfiguration;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionRequest;
import software.amazon.awssdk.services.devicefarm.model.CreateRemoteAccessSessionResponse;
import software.amazon.awssdk.services.devicefarm.model.Device;
import software.amazon.awssdk.services.devicefarm.model.DeviceFilter;
import software.amazon.awssdk.services.devicefarm.model.DeviceFilterAttribute;
import software.amazon.awssdk.services.devicefarm.model.GetRemoteAccessSessionRequest;
import software.amazon.awssdk.services.devicefarm.model.GetRemoteAccessSessionResponse;
import software.amazon.awssdk.services.devicefarm.model.ListDevicesRequest;
import software.amazon.awssdk.services.devicefarm.model.ListDevicesResponse;
import software.amazon.awssdk.services.devicefarm.model.RuleOperator;

public class CreateRemoteAccessSession {
  public static void main(String[] args) throws Exception {
    DeviceFarmClient client = DeviceFarmClient.builder()
        .region(Region.US_WEST_2)
        .build();

    String projectArn = "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef";
    String appArn     = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef";
    String aux1       = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0";
    String aux2       = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1";

    // 1) Gather all matching devices via paginated ListDevices with filters
    List<DeviceFilter> filters = Arrays.asList(
        DeviceFilter.builder()
            .attribute(DeviceFilterAttribute.MODEL)
            .operator(RuleOperator.CONTAINS)
            .values("Pixel")
            .build(),
        DeviceFilter.builder()
            .attribute(DeviceFilterAttribute.AVAILABILITY)
            .operator(RuleOperator.EQUALS)
            .values("AVAILABLE")
            .build()
    );

    List<String> matchingDeviceArns = new ArrayList<>();
    String next = null;
    do {
      ListDevicesResponse page = client.listDevices(
          ListDevicesRequest.builder().filters(filters).nextToken(next).build());
      for (Device d : page.devices()) {
        matchingDeviceArns.add(d.arn());
      }
      next = page.nextToken();
    } while (next != null);

    if (matchingDeviceArns.isEmpty()) {
      throw new RuntimeException("No available Google Pixel device found.");
    }

    // Randomly select one device from the full matching set
    String deviceArn = matchingDeviceArns.get(
        ThreadLocalRandom.current().nextInt(matchingDeviceArns.size()));
    System.out.println("Selected device ARN: " + deviceArn);

    // 2) Create Remote Access session and wait until it is RUNNING
    CreateRemoteAccessSessionConfiguration cfg = CreateRemoteAccessSessionConfiguration.builder()
        .auxiliaryApps(Arrays.asList(aux1, aux2))
        .build();

    CreateRemoteAccessSessionResponse res = client.createRemoteAccessSession(
        CreateRemoteAccessSessionRequest.builder()
            .projectArn(projectArn)
            .deviceArn(deviceArn)
            .appArn(appArn)       // optional
            .configuration(cfg)   // optional
            .build());

    String sessionArn = res.remoteAccessSession().arn();
    System.out.println("Created Remote Access Session: " + sessionArn);

    int pollIntervalMs = 3000;
    long timeoutMs = 600_000L;
    long deadline = System.currentTimeMillis() + timeoutMs;

    while (true) {
      GetRemoteAccessSessionResponse get = client.getRemoteAccessSession(
          GetRemoteAccessSessionRequest.builder().arn(sessionArn).build());
      String status = get.remoteAccessSession().statusAsString();
      System.out.println("Current status: " + status);

      if ("RUNNING".equals(status)) {
        System.out.println("Session is ready with status: " + status);
        break;
      }
      if ("STOPPING".equals(status) || "COMPLETED".equals(status)) {
        throw new RuntimeException("Session ended early with status: " + status);
      }
      if (System.currentTimeMillis() >= deadline) {
        throw new RuntimeException("Timed out waiting for session to be ready.");
      }
      Thread.sleep(pollIntervalMs);
    }
  }
}
```

------
#### [ JavaScript ]

*Catatan: petunjuk ini hanya berfokus pada pembuatan sesi akses jarak jauh. Untuk petunjuk tentang cara mengunggah aplikasi untuk digunakan selama sesi Anda, silakan lihat [mengotomatiskan unggahan aplikasi](api-ref.md#upload-example).*

*Catatan: contoh ini menggunakan AWS SDK untuk JavaScript v3.*

Contoh ini pertama-tama menemukan perangkat Google Pixel yang tersedia di Device Farm, kemudian membuat sesi akses jarak jauh dengannya dan menunggu hingga sesi berjalan.

```
import {
  DeviceFarmClient,
  ListDevicesCommand,
  CreateRemoteAccessSessionCommand,
  GetRemoteAccessSessionCommand,
} from "@aws-sdk/client-device-farm";

const client = new DeviceFarmClient({ region: "us-west-2" });

// 1) Gather all matching devices via paginated ListDevices with filters
const filters = [
  { attribute: "MODEL",        operator: "CONTAINS", values: ["Pixel"] },
  { attribute: "AVAILABILITY", operator: "EQUALS",   values: ["AVAILABLE"] },
];

let nextToken;
const matching = [];

while (true) {
  const page = await client.send(new ListDevicesCommand({ filters, nextToken }));
  for (const d of page.devices ?? []) {
    matching.push(d.arn);
  }
  nextToken = page.nextToken;
  if (!nextToken) break;
}

if (matching.length === 0) {
  throw new Error("No available Google Pixel device found.");
}

// Randomly select one device from the full matching set
const deviceArn = matching[Math.floor(Math.random() * matching.length)];
console.log("Selected device ARN:", deviceArn);

// 2) Create remote access session and wait until RUNNING
const out = await client.send(new CreateRemoteAccessSessionCommand({
  projectArn: "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
  deviceArn,
  appArn: "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", // optional
  configuration: {
    auxiliaryApps: [ // optional
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1",
    ],
  },
}));

const sessionArn = out.remoteAccessSession?.arn;
console.log("Created Remote Access Session:", sessionArn);

const pollIntervalMs = 3000;
const timeoutMs = 600000;
const deadline = Date.now() + timeoutMs;

while (true) {
  const get = await client.send(new GetRemoteAccessSessionCommand({ arn: sessionArn }));
  const status = get.remoteAccessSession?.status;
  console.log("Current status:", status);

  if (status === "RUNNING") {
    console.log("Session is ready with status:", status);
    break;
  }
  if (status === "STOPPING" || status === "COMPLETED") {
    throw new Error(`Session ended early with status: ${status}`);
  }
  if (Date.now() >= deadline) {
    throw new Error("Timed out waiting for session to be ready.");
  }
  await new Promise((r) => setTimeout(r, pollIntervalMs));
}
```

------
#### [ C\$1 ]

*Catatan: petunjuk ini hanya berfokus pada pembuatan sesi akses jarak jauh. Untuk petunjuk tentang cara mengunggah aplikasi untuk digunakan selama sesi Anda, silakan lihat [mengotomatiskan unggahan aplikasi](api-ref.md#upload-example).*

Contoh ini pertama-tama menemukan perangkat Google Pixel yang tersedia di Device Farm, kemudian membuat sesi akses jarak jauh dengannya dan menunggu hingga sesi berjalan.

```
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Amazon;
using Amazon.DeviceFarm;
using Amazon.DeviceFarm.Model;

class Program
{
    static async Task Main()
    {
        var client = new AmazonDeviceFarmClient(RegionEndpoint.USWest2);

        // 1) Gather all matching devices via paginated ListDevices with filters
        var filters = new List<DeviceFilter>
        {
            new DeviceFilter { Attribute = DeviceAttribute.MODEL,        Operator = RuleOperator.CONTAINS, Values = new List<string>{ "Pixel" } },
            new DeviceFilter { Attribute = DeviceAttribute.AVAILABILITY, Operator = RuleOperator.EQUALS,   Values = new List<string>{ "AVAILABLE" } },
        };

        var matchingArns = new List<string>();
        string nextToken = null;

        do
        {
            var list = await client.ListDevicesAsync(new ListDevicesRequest
            {
                Filters = filters,
                NextToken = nextToken
            });

            foreach (var d in list.Devices)
                matchingArns.Add(d.Arn);

            nextToken = list.NextToken;
        }
        while (nextToken != null);

        if (matchingArns.Count == 0)
            throw new Exception("No available Google Pixel device found.");

        // Randomly select one device from the full matching set
        var rnd = new Random();
        var deviceArn = matchingArns[rnd.Next(matchingArns.Count)];
        Console.WriteLine($"Selected device ARN: {deviceArn}");

        // 2) Create remote access session and wait until RUNNING
        var request = new CreateRemoteAccessSessionRequest
        {
            ProjectArn = "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
            DeviceArn  = deviceArn,
            AppArn     = "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", // optional
            Configuration = new CreateRemoteAccessSessionConfiguration
            {
                AuxiliaryApps = new List<string>
                {
                    "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
                    "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
                }
            }
        };

        request.Configuration.AuxiliaryApps.RemoveAll(string.IsNullOrWhiteSpace);

        var response = await client.CreateRemoteAccessSessionAsync(request);
        var sessionArn = response.RemoteAccessSession.Arn;
        Console.WriteLine($"Created Remote Access Session: {sessionArn}");

        var pollIntervalMs = 3000;
        var timeoutMs = 600000;
        var deadline = DateTime.UtcNow.AddMilliseconds(timeoutMs);

        while (true)
        {
            var get = await client.GetRemoteAccessSessionAsync(new GetRemoteAccessSessionRequest { Arn = sessionArn });
            var status = get.RemoteAccessSession.Status.Value;
            Console.WriteLine($"Current status: {status}");

            if (status == "RUNNING")
            {
                Console.WriteLine($"Session is ready with status: {status}");
                break;
            }
            if (status == "STOPPING" || status == "COMPLETED")
            {
                throw new Exception($"Session ended early with status: {status}");
            }
            if (DateTime.UtcNow >= deadline)
            {
                throw new TimeoutException("Timed out waiting for session to be ready.");
            }

            await Task.Delay(pollIntervalMs);
        }
    }
}
```

------
#### [ Ruby ]

*Catatan: petunjuk ini hanya berfokus pada pembuatan sesi akses jarak jauh. Untuk petunjuk tentang cara mengunggah aplikasi untuk digunakan selama sesi Anda, silakan lihat [mengotomatiskan unggahan aplikasi](api-ref.md#upload-example).*

Contoh ini pertama-tama menemukan perangkat Google Pixel yang tersedia di Device Farm, kemudian membuat sesi akses jarak jauh dengannya dan menunggu hingga sesi berjalan.

```
require 'aws-sdk-devicefarm'

client = Aws::DeviceFarm::Client.new(region: 'us-west-2')

# 1) Gather all matching devices via paginated ListDevices with filters
filters = [
  { attribute: 'MODEL',        operator: 'CONTAINS', values: ['Pixel'] },
  { attribute: 'AVAILABILITY', operator: 'EQUALS',   values: ['AVAILABLE'] },
]

matching_arns = []
next_token = nil
loop do
  resp = client.list_devices(filters: filters, next_token: next_token)
  resp.devices&.each { |d| matching_arns << d.arn }
  next_token = resp.next_token
  break unless next_token
end

abort "No available Google Pixel device found." if matching_arns.empty?

# Randomly select one device from the full matching set
device_arn = matching_arns.sample
puts "Selected device ARN: #{device_arn}"

# 2) Create remote access session and wait until RUNNING
resp = client.create_remote_access_session(
  project_arn: "arn:aws:devicefarm:us-west-2:111122223333:project:12345678-1111-2222-333-456789abcdef",
  device_arn:  device_arn,
  app_arn:     "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcdef", # optional
  configuration: {
    auxiliary_apps: [ # optional
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde0",
      "arn:aws:devicefarm:us-west-2:111122223333:upload:12345678-1111-2222-333-456789abcdef/12345678-1111-2222-333-456789abcde1"
    ].compact
  }
)

session_arn = resp.remote_access_session.arn
puts "Created Remote Access Session: #{session_arn}"

poll_interval = 3
timeout = 600
deadline = Time.now + timeout
terminal = %w[STOPPING COMPLETED]

loop do
  get = client.get_remote_access_session(arn: session_arn)
  status = get.remote_access_session.status
  puts "Current status: #{status}"

  if status == 'RUNNING'
    puts "Session is ready with status: #{status}"
    break
  end

  abort "Session ended early with status: #{status}" if terminal.include?(status)
  abort "Timed out waiting for session to be ready." if Time.now >= deadline
  sleep poll_interval
end
```

------

## Langkah selanjutnya
<a name="how-to-create-session-next-steps"></a>

Device Farm memulai sesi segera setelah perangkat dan infrastruktur yang diminta tersedia, biasanya dalam beberapa menit. Kotak dialog **Device** Required muncul sampai sesi dimulai. Untuk membatalkan permintaan sesi, pilih **Batalkan permintaan**. 

Jika perangkat yang dipilih tidak tersedia atau sibuk, status sesi ditampilkan sebagai **Perangkat Tertunda**, yang menunjukkan bahwa Anda mungkin perlu menunggu beberapa saat sebelum perangkat tersedia untuk pengujian.

**Jika akun Anda telah mencapai batas konkurensi untuk perangkat terukur atau tidak terukur publik, status sesi ditampilkan sebagai Konkurensi Tertunda.** Untuk slot perangkat yang tidak diukur, Anda dapat meningkatkan konkurensi dengan [membeli lebih banyak](how-to-purchase-device-slots.md) slot perangkat. Untuk pay-as-you-go perangkat terukur, silakan hubungi AWS melalui tiket dukungan untuk meminta peningkatan [kuota layanan](limits.md).

Saat penyiapan sesi dimulai, pertama kali menampilkan status **In-Progress**, lalu status **Connecting** saat browser web lokal Anda mencoba membuka koneksi jarak jauh ke perangkat.

Setelah sesi dimulai, jika Anda harus menutup browser atau tab browser tanpa menghentikan sesi atau jika koneksi antara browser dan internet terputus, sesi tetap aktif selama lima menit. Setelah itu, Device Farm mengakhiri sesi. Akun Anda dikenakan biaya untuk waktu idle. 

Setelah sesi dimulai, Anda dapat berinteraksi dengan perangkat di browser web, atau menguji perangkat menggunakan [Appium](appium-endpoint.md).

# Menggunakan sesi akses jarak jauh di AWS Device Farm
<a name="how-to-use-session"></a>

Untuk informasi tentang melakukan pengujian interaktif aplikasi Android dan iOS melalui sesi akses jarak jauh, lihat[Sesi](sessions.md).
+ [Prasyarat](#how-to-use-session-prerequisites)
+ [Menggunakan sesi di konsol Device Farm](#how-to-use-session-console)
+ [Langkah selanjutnya](#how-to-use-session-next-steps)
+ [Kiat dan trik](#how-to-use-session-tips)

## Prasyarat
<a name="how-to-use-session-prerequisites"></a>
+ Buat sesi. Ikuti instruksi di[Membuat sesi](how-to-create-session.md), dan kemudian kembali ke halaman ini.

## Menggunakan sesi di konsol Device Farm
<a name="how-to-use-session-console"></a>

Segera setelah perangkat yang Anda minta untuk sesi akses jarak jauh tersedia, konsol akan menampilkan layar perangkat. Sesi ini memiliki panjang maksimum 150 menit. Waktu yang tersisa dalam sesi muncul di bidang **Waktu Kiri** di dekat nama perangkat.

### Menginstal aplikasi
<a name="how-to-use-session-install-app"></a>

Untuk menginstal aplikasi pada perangkat sesi, di **Instal aplikasi**, pilih **Pilih File**, lalu pilih file.apk (Android) atau file.ipa (iOS) yang ingin Anda instal. Aplikasi yang Anda jalankan dalam sesi akses jarak jauh tidak memerlukan instrumentasi pengujian atau penyediaan apa pun.

**catatan**  
Saat Anda mengunggah aplikasi, terkadang ada penundaan sebelum aplikasi tersedia. Pesan konfirmasi akan muncul untuk memberi tahu Anda apakah aplikasi berhasil diinstal atau tidak.

### Mengontrol perangkat
<a name="how-to-use-session-control-device"></a>

Anda dapat berinteraksi dengan perangkat yang ditampilkan di konsol seperti halnya perangkat fisik yang sebenarnya, dengan menggunakan mouse Anda atau perangkat yang sebanding untuk sentuhan dan keyboard di layar perangkat. Untuk perangkat Android, ada tombol di **kontrol Tampilan** yang berfungsi seperti tombol **Beranda** dan **Kembali** pada perangkat Android. Untuk perangkat iOS, ada tombol **Beranda** yang berfungsi seperti tombol beranda di perangkat iOS. Anda juga dapat beralih antar aplikasi yang berjalan di perangkat dengan memilih **Aplikasi Terbaru**.

### Beralih antara mode potret dan lanskap
<a name="how-to-use-session-switch-between-portrait-landscape-mode"></a>

Anda juga dapat beralih antara mode potret (vertikal) dan lanskap (horizontal) untuk perangkat yang Anda gunakan. 

## Langkah selanjutnya
<a name="how-to-use-session-next-steps"></a>

Device Farm melanjutkan sesi hingga Anda menghentikannya secara manual atau batas waktu 150 menit tercapai. Untuk mengakhiri sesi, pilih **Stop Session**. Setelah sesi berhenti, Anda dapat mengakses video yang diambil dan log yang dihasilkan. Untuk informasi selengkapnya, lihat [Mengambil hasil sesi](how-to-access-session-results.md).

## Kiat dan trik
<a name="how-to-use-session-tips"></a>

Anda mungkin mengalami masalah kinerja dengan sesi akses jarak jauh di beberapa AWS Wilayah. Hal ini disebabkan, sebagian, latensi di beberapa Wilayah. Jika Anda mengalami masalah kinerja, berikan sesi akses jarak jauh kesempatan untuk mengejar ketinggalan sebelum Anda berinteraksi dengan aplikasi lagi.

# Mengambil hasil sesi akses jarak jauh di AWS Device Farm
<a name="how-to-access-session-results"></a>

Untuk informasi tentang sesi, lihat[Sesi](sessions.md).
+ [Prasyarat](#how-to-access-session-results-prerequisites)
+ [Melihat detail sesi](#how-to-view-session-details)
+ [Mengunduh video sesi atau log](#how-to-access-session-files)

## Prasyarat
<a name="how-to-access-session-results-prerequisites"></a>
+ Selesaikan sesi. Ikuti instruksi di[Menggunakan sesi akses jarak jauh di AWS Device FarmMenggunakan sesi](how-to-use-session.md), dan kemudian kembali ke halaman ini.

## Melihat detail sesi
<a name="how-to-view-session-details"></a>

Saat sesi akses jarak jauh berakhir, konsol Device Farm menampilkan tabel yang berisi detail tentang aktivitas selama sesi berlangsung. Untuk informasi selengkapnya, lihat [Menganalisis Informasi Log](how-to-use-reports.md#how-to-use-reports-console-log).

Untuk kembali ke detail sesi di lain waktu:

1. Pada panel navigasi Device Farm, pilih **Pengujian Perangkat Seluler**, lalu pilih **Proyek**.

1. Pilih proyek yang berisi sesi.

1. Pilih **Akses jarak jauh**, lalu pilih sesi yang ingin Anda tinjau dari daftar.

## Mengunduh video sesi atau log
<a name="how-to-access-session-files"></a>

Saat sesi akses jarak jauh berakhir, konsol Device Farm menyediakan akses ke rekaman video sesi dan log aktivitas. Dalam hasil sesi, pilih tab **File** untuk daftar tautan ke video sesi dan log. Anda dapat melihat file-file ini di browser atau menyimpannya secara lokal.